Eror Ketika Upload Gambar dengan Summernote pada Laravel

Selamat malam teman2, admin, dan Guru Besar Kita bersama (Mas Hilman) :D saya mendapat kesulitan saat melakukan upload Gambar menggunakan summernote pada laravel. Masalah/Eror ini muncul ketika user melakukan edit pada artikel yg mereka tulis, berikut kodenya. 1. Metode Store

 public function store(Request $request)
    {
		$this->validate($request, [
			'title' => 'required|min:7',
			'subtitle' => 'required|min:20',
			'subject' => 'required|min:20'
		]);

	   $request->tags = array_diff($request->tags, [0]);
	   if(empty($request->tags))
			return redirect('forum/create')->withInput($request->input())->with('tag_error', 'Pilih minimal satu #Tag');


       $slug = str_slug($request->title, '-');

	   //ceck slug
	   if(topic::where('slug', $slug)->first() != null)
		   $slug = $slug . '-' .time();


	   $content = $request->subject;

	    $dom = new \DomDocument();
        $dom->loadHtml( mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8"), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
        $images = $dom->getElementsByTagName('img');
		foreach($images as $k => $img){
			$data = $img->getAttribute('src');
			list($type, $data) = explode(';', $data);
			list(, $data)      = explode(',', $data);
			$data = base64_decode($data);
			$image_name= "/img_topic/" . time().$k.'.png';
			$path = public_path() . $image_name;
			file_put_contents($path, $data);
			$img->removeAttribute('src');
			$img->setAttribute('src', $image_name);
		}

	   $topic = topic::create([
			'title' => $request->title,
			'slug' => $slug,
			'subtitle' => $request->subtitle,
			'subject' => $dom->saveHTML(),
			'user_id' => Auth::user()->id

	   ]);


	   $topic->tags()->attach($request->tags);
	   $topic->save();

	   return redirect('forum')->with('msg', 'Topic Berhasil di Submit');
    }

Untuk kode diatas sejauh ini tidak ada masalah, Topik/Artikel berikut gambarnya berhasil di submit. Untuk gambarnya tersimpan di folder Public/img_topic

2. Metode Update

 public function update(Request $request, $id)
    {
		$this->validate($request, [
			'title' => 'required|min:7',
			'subtitle' => 'required|min:20',
			'subject' => 'required|min:20'
		]);

	   $request->tags = array_diff($request->tags, [0]);
	   if(empty($request->tags))
			return redirect('forum/create')->withInput($request->input())->with('tag_error', 'Pilih minimal satu #Tag');

	   $content = $request->subject;

	   $dom = new \DomDocument();
        $dom->loadHtml( mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8"), LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
        $images = $dom->getElementsByTagName('img');
		foreach($images as $k => $img){
			$data = $img->getAttribute('src');
			list($type, $data) = explode(';', $data);
			list(, $data)      = explode(',', $data);
			$data = base64_decode($data);
			$image_name= "/img_topic/" . time().$k.'.png';
			$path = public_path() . $image_name;
			file_put_contents($path, $data);
			$img->removeAttribute('src');
			$img->setAttribute('src', $image_name);
		}

	   $topic = topic::findOrFail($id);
		if($topic->isOwner()) {
			$topic->update([
				'title' => $request->title,
				'subtitle' => $request->subtitle,
				'subject' => $dom->saveHTML()
		   ]);

		   $topic->tags()->sync($request->tags);
		}
		else abort(403);

		return redirect('forum')->with('msg', 'Topic Berhasil di Edit');
    }

Untuk metode update ini muncul eror sebagai berikut:

(1/1) ErrorException Undefined offset: 1

in TopicController.php (line 187) at HandleExceptions->handleError(8, 'Undefined offset: 1', 'C:\\xampp\\htdocs\\roodie\\app\\Http\\Controllers\\TopicController.php', 187, array('request' => object(Request), 'id' => '50', 'content' => '<p><span style="color: rgb(85, 85, 85); font-family: Tahoma; font-size: 15px;">Migrations pada dasarnya bersifat agnostic, tak hanya spesifik di Laravel. Di beberapa framework PHP modern hampir semuanya memiliki fitur ini. Bahkan, bukan hanya di PHP saja adanya, di bahasa framework bahasa pemrograman lain pun tersedia. Migrations seolah menjadi standar dalam modifikasi basisdata secara on the fly.</span></p><p><img data-filename="yono-channel.png" style="width: 793.5px;" src="/img_topic/15247440120.png"><span style="color: rgb(85, 85, 85); font-family: Tahoma; font-size: 15px;"><br></span><br></p><p></p><p></p><p></p><p></p>', 'dom' => object(DOMDocument), 'images' => object(DOMNodeList), 'img' => object(DOMElement), 'k' => 0, 'data' => '/img_topic/15247440120.png', 'type' => '/img_topic/15247440120.png')) in TopicController.php (line 187)

Eror terdapat pada Line 187 yang ada pada Metode Update, berikut Line 187 :

 foreach($images as $k => $img){
			$data = $img->getAttribute('src');
			list($type, $data) = explode(';', $data);  //LINE 187
			list(, $data)      = explode(',', $data);
			$data = base64_decode($data);
			$image_name= "/img_topic/" . time().$k.'.png';
			$path = public_path() . $image_name;
			file_put_contents($path, $data);
			$img->removeAttribute('src');
			$img->setAttribute('src', $image_name);
		}

Mohon dibantu untuk masalah ini, atau jika temen2 punya cara yang lebih baik dari cara yang saya gunakan di atas.. boleh donk bocorannya.. hehe Karna untuk cara diatas ketika user menghapus Topic/Artikelnya Gambar yang ada di folder "Public/img_topic" tidak ikut terhapus. Terimakasih.

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 6 tahun yang lalu

Belum ada Jawaban. Jadi yang pertama Jawaban

Login untuk ikut Jawaban