получить HTML-файл .ctp в CAKEPHP - PullRequest
0 голосов
/ 06 декабря 2018

Я развернул приложение, используя cakephp.Теперь у меня есть некоторые данные, которые я хочу представить на некоторой логике.Эти данные должны отображаться в виде страницы, содержащей некоторые входные данные и другие поля.

Одна вещь заключается в том, чтобы сделать это на стороне javascript, но это не будет подходящим вариантом для создания целого HTML в javascript.

Другим решением, над которым я работаю, является передача данных в файл .ctp.Получите html и передайте это моему содержанию.

Я пытаюсь сделать это как

$html = $this->render('myview'); $this->set('html', $view);

, но он отображает myview как страницу, а не html, которая будет отображаться на моем экране.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Из того, что я понял из вашего вопроса и комментариев, вы хотите визуализировать что-то в определенном месте вашего обзора, но вы хотите поместить код для этого компонента в отдельный файл .ctp.CakePHP уже имеет встроенные инструменты для достижения этой цели - Elements and Cells.

Элементы - это многократно используемые фрагменты кода, которые находятся в каталоге src/Template/Element.Чтобы создать элемент, просто создайте новый файл .ctp (например, myelement.ctp) в этом каталоге и выведите его в главном представлении, используя:

<?= $this->element("myelement") ?>

Элементы имеют доступ к переменным, передаваемым в представление, из которогоВызываются, но при необходимости можно также передать переменные в качестве второго аргумента:

<?= $this->element("myelement", ["somevariable" => "somevalue"]) ?>

С другой стороны, у вас есть также ячейки, которые должны использоваться при необходимости для создания компонента многократного использования, который зависит от некоторыхлогика, которая должна быть отделена от кода контроллера.Ячейка состоит из двух частей - класса Cell, который эквивалентен контроллеру, и файла шаблона.Его можно запечь:

bin/cake bake cell Sample

Эта команда создаст файлы src/View/Cell/SampleCell.php и src/Template/Cell/Sample/display.ctp.В первом из них может быть выполнена стандартная логика контроллера.Во-вторых, вы можете поместить HTML и доступ к переданным переменным.Ячейка может быть отображена в виде с помощью:

<?= $this->cell("Sample") ?>

Более подробную информацию можно найти в документах:

Элементы

ViewКлетки

0 голосов
/ 07 декабря 2018

Следуйте коду, чтобы добиться того же самого, (этот код в методе / действии вашего контроллера)

        //Variables used in view
        $data = $this->Admins->newEntity();

        // create a builder
        $builder = $this->viewBuilder();

        // configure as needed
        $builder->setLayout('default');
        $builder->setTemplate('/Admins/login');   //Here you can use elements also
        $builder->setHelpers(['Html']);

        // create a view instance
        $view = $builder->build(compact('data'));   //Pass the variables to the view

        // render to a variable
        $output = $view->render();

        //Print output
        pr($output);
        die;
...