CakePHP视图无法渲染

时间:2015-11-17 16:02:29

标签: php cakephp

我有一个由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

2 个答案:

答案 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)

好吧......我做了一些cakephp框架代码的调试。 我正在使用auth组件来登录我的功能。

我发现新添加的操作不允许通过auth组件的直通过滤器。所以我在这个appcontroller的beforefilter方法中添加了新添加的动作。我想默认情况下已经在过滤器中添加了crud操作。

$this->Auth->allow(['index', 'view', 'display','listjobs','add','delete']);

欢呼声,

Saurav