我正在尝试使用CodeIgniter,就像在RoR中工作一样,然后在视图中使用模型中定义的函数,依此类推。让我用一些例子来解释:
我的用户控制器
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Users extends MY_Controller {
public function __construct() {
parent::__construct();
}
public function show($id) {
$user = $this->user_model->get($id);
$this->data['user'] = $user;
$this->load_view('users/show');
}
}
我的用户模型
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class User_model extends MY_Model {
public function __construct() {
parent::__construct();
}
public function who() {
return ( $this->name ) ? $this->name : $this->email;
}
}
然后我想在我看来这样做
...
<main>
<h3><?= $user->who() ?></h3>
</main>
...
我怎样才能实现这个目标?
注意:如果我回显
$user->email它可以正常工作......
答案 0 :(得分:0)
我认为你只是错过了传递到视图中的数据。 $ this-&gt; load-&gt; view()也有拼写错误。
$this->load->view('users/show', $this->data);
另外,你在用吗?
答案 1 :(得分:0)
这里的问题是CI与rails的工作方式不同。这里:
$user = $this->user_model->get($id);
当您在对象上调用get
时,您正在分配由CI的ActiveRecord实现动态创建的对象,因此,该对象不具有who
方法。但是,这可行:
$this->user_model->who()
因为在该范围内,在控制器中,user_model
只是User_model
类的一个实例,即who
的声明。
我的建议是使用custom helper来实现这种功能。 CI模型不能作为Rails模型工作