Cakephp 蛋糕PHP表单助手

Cakephp 蛋糕PHP表单助手,cakephp,Cakephp,我在Form Helper中遇到问题。我的控制器名是posts_controller.php,如下所示 <?php Class PostsController extends AppController { var $name='Posts'; var $helpers=array('Html','Form','Link'); var $components = array('Session'); functi

我在Form Helper中遇到问题。我的控制器名是posts_controller.php,如下所示

<?php
    Class PostsController extends AppController
    {
        var $name='Posts';
        var $helpers=array('Html','Form','Link');
        var $components = array('Session');
        function index()
        {
            $this->pageTitle='Cake PHP Index page';            
            $this->paginate();
            $this->set('posts',$this->Post->find('all'));
        }

        function view($id=null)
        {
            $this->Post->id = $id;
            $this->set('post', $this->Post->read());
        }

        function add()
        {
            if(!empty ($this->data))
            {
                if($this->Post->save($this->data))
                {
                    $this->Session->setFlash('Your post has been saved.');
                    $this->redirect(array('action' => 'index'));
                }
            }
        }
    }
?>

当我转到添加操作时,视图add.ctp将加载相应的表单

这是我的视图文件add.ctp

<?php
    echo $this->Form->create('Post');
    echo $this->input('title');
    echo $this->input('body');
    echo $this->Form->end('Save');
?>

当我提交表单时,我收到一个错误,说明您的控制器中没有定义posts操作。当我在浏览器中检查页面的源时,表单的操作有一个假值。我得到的值是

<form id="PostAddForm" method="post" action="/cakephp/app/webroot/index.php/posts/posts/add">

而不是

<form id="PostAddForm" method="post" action="/cakephp/app/webroot/index.php/posts/add">


你能帮我吗?

试着在你的服务器上启用mod_rewrite。对我来说,这就是问题所在,尤其是如果你的代码就是你发布的代码。

试着在你的服务器上启用mod_rewrite。对我来说,这就是问题所在,尤其是如果你的代码就是你发布的代码。

就像Nik说的,这看起来像是一个mod_重写问题。该表单HTML应如下所示:

<form id="PostAddForm" method="post" action="/YourSite/posts/add">


mod_rewrite是一个Apache模块。通常默认情况下不启用它。有很多页面解释如何做,但如果你在Ubuntu或Debian上,这可能有点神秘。如果是这样的话,看看这里:

就像尼克说的,这看起来像是一个模版重写问题。该表单HTML应如下所示:

<form id="PostAddForm" method="post" action="/YourSite/posts/add">


mod_rewrite是一个Apache模块。通常默认情况下不启用它。有很多页面解释如何做,但如果你在Ubuntu或Debian上,这可能有点神秘。如果是这样的话,请看这里:

而且您在代码中忘记了一个:

 echo $this->input('title);
 echo $this->input('title');

此外,您在代码中忘记了一个:

 echo $this->input('title);
 echo $this->input('title');

我认为应该这样写

$this->Form->create("Post",array('action'=>'add'));

我认为应该这样写

$this->Form->create("Post",array('action'=>'add'));

谢谢Nik和Leo,当我尝试使用mod_rewrite时,我已经纠正了它。非常感谢…谢谢Nik和Leo,当我尝试使用mod_rewrite时,我已经纠正了它。非常感谢你。。。