来自绝对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
答案 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));