Для настройки небольшого домашнего фрейма я хочу отправить переменные в представление, но на сегодняшний день я не нашел никаких решений, которые работают.Функция для отправки переменной контроллера для просмотра
Код в вопросе:
SRC/Controller/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;
}
}
?>
приложение/Controller/PostsController.php
<?php
namespace App\Controller;
class PostsController extends Controller {
public function index() {
$posts = [
"id" => "1",
"ids" => "2"
];
$this->set(compact('posts'));
}
}
?>
Использование $this->set
функции в PostsController возвращает меня Неопределенная переменная: сообщения после эха.
Я также пытаюсь установить ob_start
и ob_get_clean
в функцию набора, но не работает.
А именно, я не хочу включать набор функций в рендеринг, поскольку я обрабатываю представление вида динамически (см. __construct()
).
Другой вопрос:
Как я связать Посмотреть класс с моими взглядами и таким образом использовать $this->method()
.
Спасибо
Спасибо, это работает, но, как Я заявил в своем первом сообщении, что хотел бы избежать вызова представления, передав переменную. Идеальным было бы, чтобы получить функцию, которую вы сделали меня, и заменить вид с нулевым, например: PHP $ this-> визуализации (NULL, [ 'Param1' => 'value1', ' Param2' => «значение2 ]; > Я стараюсь, но это не работает, идея борьбы с этой небольшой проблемой Спасибо – Darkh
EDIT: Я только что удалось изменить функцию, чтобы показать, что переменные? , переменные отображаются хорошо, но все же задают мне неопределенную переменную ... Посмотрите код: https://code.empreintesduweb.com/11288.html – Darkh