0
小さなホームフレームワークを設定するには、ビューに変数を送信する必要があります。ビューにコントローラ変数を送信する関数
問題のコード:
のsrc /コントローラ/ Controller.php
<?php
namespace App\Controller;
use App\Network\Request;
class Controller {
protected $viewPath = ROOT . VIEW;
protected $template = ROOT . TEMPLATE;
protected $layout = "default";
public function __construct()
{
$request = new Request();
$this->render($request->controller().'/'. $request->action());
}
public function layout($template) {
if($template != $this->layout) {
require $this->template . $template . '.php';
}
}
public function render($view) {
ob_start();
require $this->viewPath . '/' . str_replace('.', '/', $view). '.php';
$content = ob_get_clean();
require $this->template .$this->layout . '.php';
}
public function set($varname) {
extract($varname);
return $varname;
}
}
?>
アプリ/コントローラ/ PostsController.php
で$this->set
機能を使用して
<?php
namespace App\Controller;
class PostsController extends Controller {
public function index() {
$posts = [
"id" => "1",
"ids" => "2"
];
$this->set(compact('posts'));
}
}
?>
PostsControllerが私に返す未定義の変数:エコー後の投稿。
また、ob_start
とob_get_clean
をセット機能に入れようとしますが、どちらも機能しません。
つまり、ビューのビューを動的に処理するため、レンダリングに関数セットを含めたくありません(__construct()
参照)。
別の質問:私は私の意見でViewクラスを関連付けるため、$this->method()
を使用するにはどうすればよい
。
は
のようにそれを呼び出すことがとしてではなく作品、ありがとう私は最初の投稿で述べましたが、変数を送信してビューを呼び出さないようにしたいと思います。 理想的には、あなたが私を行っている機能を取得し、ヌル、一例でビューを置き換えるために、次のようになります。<?phpの ます$ this-> (ヌル、[ 「Param1の」=>「VALUE1」、 をレンダリング " ??PARAM2' =>「value2の ]; > この小さな問題に対処するためのアイデア、私がしようとしたが、それは動作しません はあなたに – Darkh
EDITありがとう:私は変数ことを示すために機能を変更するだけで管理しています変数はうまく表示されますが、まだ未定義の変数が表示されます... コードを参照してください:https://code.empreintesduweb.com/11288.html – Darkh