Sử dụng phương thức trong route post laravel

Mình dùng post trong laravel và muốn sử dụng phương thức trong phương thức nhưng không chạy được, ở đây $DeTai không dùng được phương thức c_element() đã khai báo.

public function c_element($e_name, $parent)
	{
		global $xml;
		$node = $xml->createElement($e_name);
		$parent->appendChild($node);
		return $node;
	}
	public function c_value($value, $parent)
	{
		global $xml;
		$value = $xml->createTextNode($value);
		$parent->appendChild($value);
		return $value;
	}
	public function store(Request $request)
	{
		$xml = new DOMDocument("1.0","UTF-8");
		$xml->load('../xml/QuanLyDoAnTotNghiep.xml');

		if ($request->isMethod('post')) 
		{
			$madt= $request->madt;
			$noidungdetai = $request->noidungdetai;
			$root=$xml->getElementsByTagName("QuanLyDoAnTotNghiep")->item(0);
				$DeTai = c_element("DeTai", $root);

				$s_madt = c_element('MaDT', $DeTai);
				c_value("$madt", $s_madt);
				$s_noidungdetai = c_element('NoiDungDeTai', $DeTai);
				c_value("$noidungdetai", $s_noidungdetai);

				$xml->formatOutput=true;
				$xml->save('../xml/QuanLyDoAnTotNghiep.xml');
				echo "Thêm mới thành công!!!";
		}	
	}
$DeTai = c_element("DeTai", $root);

$DeTai = $this->c_element("DeTai", $root);

hoặc

$DeTai = self::c_element("DeTai", $root);

Ngoài lề chút:
Đã dùng Laravel rồi mà sao lại viết theo kiểu PHP thuần lẫn lộn thế kia?
Mình nghĩ bạn nên đọc và làm theo docs tại trang chủ của Laravel để nắm được cách sử dụng chính xác.

2 Likes

Mình đã sửa lại nhưng lại ra lỗi khác, khi submit báo lỗi Call to a member function createElement() on null

Oh, mình cũng đã nghĩ sẽ thành như vậy :smiley:
Code bạn viết rối quá nên sẽ còn nhiều lỗi, lỗi tới đâu fix tới đó thôi chứ sao :sweat_smile:
※ Mình chỉ support câu hỏi ban đầu thôi.

3 Likes

Vì mình mới chỉ tìm hiểu laravel thôi còn đoạn code trên dùng php thuần thì chạy ko sao hết.

Support thêm cho lần nữa trước khi di ngủ.

Tìm đoạn code có gọi hàm createElement()
↓ trong function c_element

$node = $xml->createElement($e_name);


$xml bị null
↓ đoạn code này vô dụng

global $xml;

Bạn đã khai báo $xml ở đâu?
↓ trong hàm store

$xml = new DOMDocument("1.0","UTF-8");

Khai báo $xml trong hàm store và đem $xml đi đến các hàm khác bằng global đã thất bại.
Đó là lý do mình nói bạn không nên dùng theo kiểu PHP thuần khi viết Laravel, dễ dẫn đến những bug như vậy.
Mình phán đoán vậy thôi, không chạy code nên cũng không chắc chắn, bạn debug và tìm cách fix tiếp nhé.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?