我已经使用cakephp
部署了一个应用程序。现在我有一些要渲染的数据。该数据应显示为包含一些输入和其他字段的页面。
一件事是在javascript
端执行此操作,但这不是在javascript
中创建整个html的合适选择。
我正在使用的其他解决方案是将数据传递到.ctp
文件。获取html
并将其粘贴到我的内容中。
我正在尝试以此
$html = $this->render('myview');
$this->set('html', $view);
但是它将myview呈现为页面而不是显示在我的视图中的html。
答案 0 :(得分:0)
按照代码实现相同的效果(此代码在控制器的方法/操作中)
//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;
答案 1 :(得分:0)
根据我对问题和评论的理解,您希望在视图的某个位置呈现某些内容,但是您想要将该组件的代码放在单独的.ctp文件中。 CakePHP已经内置了实现此目的的工具-元素和单元。
元素是可重用的代码段,位于src/Template/Element
目录中。要创建元素,只需在此目录中创建新的.ctp文件(例如myelement.ctp),然后使用以下命令在主视图中将其输出:
<?= $this->element("myelement") ?>
元素可以访问传递给视图的变量,从中可以调用这些变量,但是如果需要,还可以将变量作为第二个参数传递:
<?= $this->element("myelement", ["somevariable" => "somevalue"]) ?>
另一方面,您还具有单元,应根据需要使用该单元来创建可重用的组件,该组件取决于应与控制器代码分开的某些逻辑。 Cell由两部分组成-一个Cell类(与控制器等效)和模板文件。可以通过以下方式烘烤:
bin/cake bake cell Sample
此命令将创建src/View/Cell/SampleCell.php
和src/Template/Cell/Sample/display.ctp
文件。首先,可以执行标准控制器逻辑。其次,您可以放置HTML并访问传递的变量。可以使用以下方法将单元格渲染到视图中:
<?= $this->cell("Sample") ?>
更多信息可以在文档中找到: