蛋糕php中的元素

时间:2011-12-22 05:25:22

标签: cakephp

我正在使用linux-mint操作系统 我必须在我的网站主页上的前端放一个搜索表单: 我做过这样的事情:

我的应用模型: 无功/网络/项目/应用程序/模型/ search.php中

    <?php
     class Search extends AppModel {
     var $name = 'Search';

     }
    ?>

我的控制器: 无功/网络/项目/应用程序/控制器/ searches_controller.php

        <?php
         class SearchesController extends AppController {
     var $name = 'Searches';
     var $helpers = array('Html', 'Form');
          function search()
          {
            $this->layout = 'default';
            return $searches = $this->Search->find('all');
          }

        }
       ?>

按照上述步骤操作后,我创建了一个元素以在我的主页上显示该表单 我的元素: var / www / project / app / views / element / search.ctp

       <?php 
        $searches = $this->requestAction('searches/search');
       ?>
       <?php
          echo $form->create('Search', array('controller'=>'searches',
                               'action' => 'search'));?>
         <select name="search">
         <option>------Select------</option>
         <?php  foreach($searches as $search) { ?>
         <option value="<?php echo $search['Search']['id'];?>">
         <?php echo   $search['Search']['media'];?></option>
        <?php } ?>
        </select>

     <?php echo $form->end('submit'); ?> 

我把代码放在我的default.ctp中,如下所示:

     <?php echo $this->element('search');?>

完成所有这些后,我尝试查看我的主页,但它显示错误消息:

  

致命错误:在非对象中调用成员函数create()   第4行的/var/www/Emedia/app/views/elements/search.ctp

注意(8):未定义的变量:表格[APP / views / elements / search.ctp,第4行]

4 个答案:

答案 0 :(得分:0)

表格应为:

//in your element
//remove echo $element->create... and use
echo $form->create('Search', array(
        'id' => 'someform', 
        'url' => array(
            'controller' => 'searches', 
            'action' => 'search')
        )
    ); 
//and form end
echo $form->end('submit'); //not $element->end('submit');

答案 1 :(得分:0)

不应该有任何“回归” - 你为什么这样做? 如果您还不熟悉它的工作原理,请使用“蛋糕烘焙”。

无论如何,这应该有所帮助:

$searches = $this->Search->find('all');
$this->set(compact('searches'));

答案 2 :(得分:0)

echo $form->create('Search', array('controller'=>'searches',
                               'action' => 'search'));?>

而不是使用:

echo $this->Form->create('Search', array('controller'=>'searches',
                               'action' => 'search'));?>

它将解决:

  

致命错误:在非对象中调用成员函数create()   第4行的/var/www/Emedia/app/views/elements/search.ctp

答案 3 :(得分:0)

如果您正在使用CakePHP 2.x,那么我认为您无法通过变量$ form

直接访问FormHelper

尝试:

$this->Form->create('Search',array('action'=>'yourAction'));