如何在CakePHP3中更改控制器中的视图块内容?
在Layouts/default.ctp中,您将在第39行看到类似的内容:如何在CakePHP3中更改控制器中的视图块内容?,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,在Layouts/default.ctp中,您将在第39行看到类似的内容: <div class="header-title"> <span><?= $this->fetch('title') ?></span> </div> 在/users/login控制器操作中 不起作用 我也试过了 $this->assign('title', 'Login'); 在/user
<div class="header-title">
<span><?= $this->fetch('title') ?></span>
</div>
在/users/login
控制器操作中
不起作用
我也试过了
$this->assign('title', 'Login');
在/users/login
控制器操作中
我收到以下错误消息:
Call to undefined method App\Controller\UsersController::assign()
我读了文件,从
我明白了
当要转换块时,指定块的内容通常很有用
将变量查看到块中。例如,您可能希望使用块
用于页面标题,有时将标题指定为视图变量
在控制器中:
我的
这表明您可以在控制器内部使用分配。我想我已经证明了这是错误的
文件中可能有打字错误。请告知我如何设置标题多亏了irc频道#cakephp的达科塔,这是如何设置标题的
内部userscocontroller.php
:
$this->set('title', 'Login');
内部src/Template/Layouts/default.ctp
在$this->fetch('title')上方代码>
写:
if (isset($title)) {
$this->assign('title', $title);
}
问题是CakePHP3如何设置默认值
答案在
附加图像以防链接损坏
您可以看到它将默认为视图路径
如果要将视图变量转换为块,指定块的内容通常非常有用。例如,您可能希望对页面标题使用块,有时将标题指定为控制器中的视图变量:
以上内容并不建议您在控制器中使用assign(请注意粗体)。以上建议,不要使用
$this->start('title');
echo $title;
$this->end()
你可以用
$this->assign('title', $title);
并且应该从控制器中设置$title
变量
如果你想从你的控制器上用正确的方式来做,你必须写
$this->set('title', $title);
并从布局/视图文件中写入
echo $title;
蛋糕3(和蛋糕2?)为您提供了覆盖“视图”类的可能性。这是调用assign()的好地方
例如:
namespace App\View;
use Cake\View\View;
class AppView extends View
{
public function initialize()
{
$this->assign('the_block_name', "Hello from AppView");
}
}
在Layout/default.ctp中:
<?= $this->fetch('the_block_name') ?>
如果像我的例子一样,您希望定义一个“默认”块,那么上面的解决方案非常有效。可以按如下方式替代任何视图文件(.ctp)中的默认块:
$this->start('the_block_name');
echo '<h4>Hello from current view!</h4>';
$this->end();
$this->start('u block'u name');
回显“当前视图中的您好!”;
$this->end();
i的可能副本表明这是针对CakePHP 3.x的。所以我不同意重复标志。但是两者都使用相同的功能,stackoverflow不是一个对每个php版本的数组如何按值排序的问题!!我同意。那么,在这种情况下,您还应该将2.5问题标记为此问题的副本。文档使用了一种繁琐的方式来表达此想法。这对初学者来说不是很明显。你是什么意思?我需要指定一个默认参数“page_header_image”(在我的模板中呈现),并且在某些情况下,覆盖特定页面的page_header_图像。我能写$this->assign('page_header_image','…');在特定视图中,但是默认的页面\页眉\图像值呢?
$this->start('the_block_name');
echo '<h4>Hello from current view!</h4>';
$this->end();