-1

こんにちは、私はCakephpページを持っています。リンクにカーソルを合わせると正しいリンクが表示されますが、リンクをクリックすると完全に異なる/間違ったページに移動します。

私は自分の見解に誤りがあると思いますので、ここにサイトの関連部分を含めます。何が起こっているのかというと、ユーザーadd linkfields/viewfields/add_new

        <tr>
                <td align='center'><?php echo $templates['Template']['name'] ;?></td>
            <td align='center'><?php echo $templates['Template']['description']; ?> </td>
                <td align='center'>
                    <?php echo $this->Form->Html->link('Add', array('controller' => 'Fields','action'=>'add_new',$templates['Template']['id'])); ;?> |
                    <?php echo $this->Form->Html->link('View', array('controller' => 'Fields','action'=>'view',$templates['Template']['id'])); ;?> |
                    <?php echo $this->Form->Html->link('Edit', array('controller' => 'Templates','action'=>'edit',$templates['Template']['id'])); ;?> |
                    <?php echo $this->Form->Html->link('Delete', array('controller' => 'Templates','action'=>'delete',$templates['Template']['id'])); ;?></td> 
         <tr>





function add_new($id=null){
        //allows users to add another field to an existing template
        $this->set('title_for_layout', 'Create Fields');
        $this->set('stylesheet_used', 'homestyle');
        $this->set('image_used', 'eBOXLogoHome.png');
        $this->layout='home_layout';


        if(($this->Field->save($this->request->data)))
        {

        $id = $this->data['Field']['template_id'];

        $this->set('id',$id);
        $this->redirect(array('controller'=>'Fields', 'action'=>'view',$id));

        }
            $this->set('id',$id);
        }
4

2 に答える 2

0

link関数はHtmlHelperクラスの一部です。->Formしたがって、次の関数呼び出しからを削除する必要があります。

<?php echo $this->Html->link('Add', array('controller' => 'fields', 'action'=>'add_new',$templates['Template']['id'])); ;?>

また、Cakeの規則では、コントローラー名を小文字にする必要があるため、コントローラーを次のように指定します。

('controller' => 'fields',

ではなく

('controller' => 'Fields',

于 2012-10-01T01:09:43.407 に答える
0
function add_new($id=null){
        //allows users to add another field to an existing template
        $this->set('title_for_layout', 'Create Fields');
        $this->set('stylesheet_used', 'homestyle');
        $this->set('image_used', 'eBOXLogoHome.png');
        $this->layout='home_layout';


        //this sets the parameter as a variable 
        $this->set('id', $id);
        //if the data posts to the databse
        if($this->request->is('post'))
        {
            //creates an instance of field in the database
            $this->Field->create(); 
            //if the field saves to the database
            if ($this->Field->save($this->request->data))
            {   //if the user clicks this button
                $id = $this->data['Field']['template_id'];

                $this->set('id',$id);
                $this->redirect(array('controller'=>'Fields', 'action'=>'view',$id));


            }

        }

    }
于 2012-10-01T09:50:41.140 に答える