在非对象app \ Controller \ CarriesController.php第5行调用成员函数create()

时间:2014-03-04 08:52:45

标签: php cakephp

在app \ Controller \ CarrierController.php

<?php
class CarriesController extends AppController {
    public function index(){
        if($this->request->is('post')){
            $this->Carries->create();
             if ($this->Carries->save($this->request->data)) {
                $this->Session->setFlash(__('Your contact has been saved.'));
                 return $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('Unable to add your contact.'));
            }
            }
        }

}

和它的模型 // Carriers.php ////运营商是表格字段插入

<?php 
class Carriers extends AppModel{

    public $useTable='carriers'; 
    }
?>

最后是视图app \ View \ Carries \ index.cpt

<h1>welcome to Carriers</h1>
<br />
<br/>
<?php echo $this->Form->create('Carriers', array('enctype' => 'multipart/form-data'));?>
<table>
<tr><h3>Register here</h3></tr>

<tr><td>F.Name</td><td><?php echo $this->Form->text('fname'); ?></td></tr>
<tr><td>L.Name</td><td><?php echo $this->Form->text('lname');?></td></tr>
<tr><td>Date Of Birth</td><td><?php echo $this->Form->date('dob');?></td></tr>
<tr><td>Degree</td><td><?php echo $this->Form->select('field', array('options' => array('B.E','B.sc','Mca','Mtech','Mba'),'empty' => '(choose)')); ?></td></tr>
<tr><td>Sex</td><td><?php
$options=array('M'=>'Male','F'=>'Female');
$attributes=array('legend'=>false);
echo $this->Form->radio('gender',$options,$attributes);
?></td></tr>
<tr><td><?php echo $this->Form->input('Carriers.Resume', array('between'=>'<br />','type'=>'file'));?></td></tr>

<tr><td><?php echo $this->Form->end('Apply');?></td></tr>



</table>

这里收到错误

2 个答案:

答案 0 :(得分:4)

模型名称是单数

如所示in the documentation

  

模型类名称是单数和CamelCased。

如果您有数据库表carriers,则型号名称为Carrier

是常规的

控制器文件在问题中是单数的,如果网址是/carrier/xxx(并且类存在),它将起作用 - 因为CakePHP不会对网址应用任何变形魔法。

然而,期望的URL将是:/carriers/xxx(即控制器名称是复数)。在问题中,文件名是单数,类名是拼写错误:

in app\Controller\CarrierController.php
                  ^^^^^^^
class CarriesController
      ^^^^^^^

CakePHP不会在错误名称的文件中找到类,或者使用位于正确位置但错误名称=的类。

答案 1 :(得分:0)

它是一个Camelcase名称问题, 否则,如果你想保持这样,你可以简单地手动加载模型 与

public function index(){
        if($this->request->is('post')){
            $this->loadModel('Carriers'); 
            $this->Carries->create();
            // ...
        }
}

将此属性添加到控制器

public $uses = array('Carriers');
祝你好运。