我有一个由CakePHP烘焙的基本应用程序。
现在我想在我的模型控制器类中添加一个新的action'listjobs',并在/Template/Job/listjobs.ctp中添加相应的“listjobs”视图。
从我模型的索引视图中,我在侧面导航栏中添加了一个操作。 像这样
<li><?= $this->Html->link(__('View Jobs'),['action' => 'listjobs']) ?></li>
当我点击“查看作业”链接时,控制指向我模型控制器的操作方法,但它没有取得列表作业的视图。
我的行动方法的代码
public function listjobs()
{
$this->log("inside list jobs",'debug');
$this->render('listjobs');
}
listjobs.ctp包含一个非常基本的代码,如下所示
<div class="actions columns large-2 medium-3">
<h3><?= __('Actions') ?></h3>
<ul class="side-nav">
<li>< Git Hub >
</li>
<li>< Stack overflow >
</li>
</ul>
</div>
无法找出视图未呈现的原因,而是呈现索引视图。
根据chrome控制台按顺序加载的链接
(1)http://localhost/myjobs/job/listjobs
(2)http://localhost/myjobs/job
所以(1)应该已经加载了视图..不应该被重定向到(2)
此致 Saurav
答案 0 :(得分:1)
我认为你需要像这样使用。
<li><?php echo $this->Html->link('View Jobs',array('controller' => 'MyModel', 'action' => 'listjobs')); ?></li>
您的观点将是。
public function listjobs()
{
$this->log("inside list jobs",'debug');
}
我认为您不需要渲染,默认情况下您的视图会呈现,您需要发送$this->set(compact('VarName'));
其次$this->log("inside list jobs",'debug');
如果log是一个方法,那么你需要设置动作,然后就是。
$this->setAction('log');
尝试,如果您收到错误,请告诉我。如果你的工作正常,你认为可行。
http://localhost/myjobs/job/listjobs
此链接定义。
http://localhost/SiteName/ControllerName/ActionName/Parameter
获取评论并研究此页。
http://book.cakephp.org/2.0/en/core-libraries/helpers/html.html
谢谢
答案 1 :(得分:0)
我发现新添加的操作不允许通过auth组件的直通过滤器。所以我在这个appcontroller的beforefilter方法中添加了新添加的动作。我想默认情况下已经在过滤器中添加了crud操作。
$this->Auth->allow(['index', 'view', 'display','listjobs','add','delete']);
欢呼声,
Saurav