我正在使用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行]
答案 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'));