CakePHP:未在“编辑”屏幕中填充的字段

时间:2010-10-08 12:30:49

标签: cakephp view controller field edit

来自绝对n00b的简单问题。

我正在尝试根据Cake网站上的博客教程中给出的代码创建编辑内容屏幕。

这是控制器中的编辑功能(名为Contents):

function edit( $id = null ) {
    $this->Content->id = $id;
    Debugger::dump( $this->Content->id );
    if( empty( $this->data ) ) {
        $this->data = $this->Content->read();
        Debugger::dump( $this->Content );
    }
    else {
        if( $this->Content->save( $this->data ) ) {
        $this->Session->setFlash( 'Content has been updated.' );
        $this->redirect( array('action' => 'index') );
        }
    }
}

这是 edit.ctp

echo $form->create( 'Content', array('action' => 'edit') );
echo $form->input( 'id', array('type' => 'hidden') );
echo $form->input( 'title' );
echo $form->input( 'nicename' );
echo $form->end( 'Save' );

但是,当我访问“编辑”屏幕时,输入字段没有获取所请求的数据。

我正在使用HTML Helper生成链接,我的编辑链接采用以下形式:

http://localhost/contents/edit/id:4c8efaa0-02fc-46bf-ac65-06a07614f57d

正如您所看到的,我在控制器的编辑功能中引入了两个调试器转储......当我访问它时,显示 $ this-> Content-> id 保持为NULL网址。

但是,如果我修改此表单的网址(请注意我使用了'='而不是':'):

http://localhost/contents/edit/id=4c8efaa0-02fc-46bf-ac65-06a07614f57d

调试程序报告 $ this-> Content-> id 以获得正确的值...

但是,我的字段仍然没有填充。

虽然索引功能正常......

function index() {
    $this->set( 'contents', $this->Content->find( 'all' ) );
}

以上功能正确列出内容!

我哪里错了?我错过了视图中的一些基本代码吗? 任何帮助将不胜感激。

谢谢, 米^ E

1 个答案:

答案 0 :(得分:2)

问题在于:

http://localhost/contents/edit/id:4c8efaa0-02fc-46bf-ac65-06a07614f57d

基本上你的网址应该是这样的:

http://localhost/contents/edit/4c8efaa0-02fc-46bf-ac65-06a07614f57d

您可能会注意到正确的网址中缺少了ID :.原因:如果你传递了id:这是命名参数,它没有在函数中分配给$ id。

编辑表单的链接应如下所示:

$this->Html->link('Edit', array('controller'=>contents', 'action'=>'edit', $id_variable));