在CAKEPHP中获取.ctp文件的html

时间:2018-12-06 15:15:52

标签: php cakephp cakephp-3.0

我已经使用cakephp部署了一个应用程序。现在我有一些要渲染的数据。该数据应显示为包含一些输入和其他字段的页面。

一件事是在javascript端执行此操作,但这不是在javascript中创建整个html的合适选择。

我正在使用的其他解决方案是将数据传递到.ctp文件。获取html并将其粘贴到我的内容中。

我正在尝试以此

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

但是它将myview呈现为页面而不是显示在我的视图中的html。

2 个答案:

答案 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.phpsrc/Template/Cell/Sample/display.ctp文件。首先,可以执行标准控制器逻辑。其次,您可以放置​​HTML并访问传递的变量。可以使用以下方法将单元格渲染到视图中:

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

更多信息可以在文档中找到:

Elements

View Cells