我已经使用石油为我的网站生成了一个管理面板。我在我的数据库中有所有的表,网站正在工作,我已经启用了orm和auth包,但我在登录过程中有一个问题。
有问题的控制器/admin.php在这里:
if ($val->run())
{
$auth = Auth::instance();
// check the credentials. This assumes that you have the previous table created
if (Auth::check() or $auth->login(Input::post('email'), Input::post('password')))
{
// credentials ok, go right in
if (Config::get('auth.driver', 'Simpleauth') == 'Ormauth')
{
$current_user = Model\Auth_User::find_by_username(Auth::get_screen_name());
}
else
{
$current_user = Model_User::find_by_username(Auth::get_screen_name());
}
Session::set_flash('success', e('Welcome, '.$current_user->username));
Response::redirect('admin');
}
else
{
$this->template->set_global('login_error', 'Fail');
}
}调用中的函数find_by_username
$current_user = Model_User::find_by_username(Auth::get_screen_name());没有实现,我假设它必须在模型/用户中,如下所示:
class Model_User extends \Orm\Model
{
.......
public static function find_by_username($username_given)
{
return Model_User::query()->where('username',$username_given)->get();
//$escaped_username = \Fuel\Core\DB::escape($username_given);
//return \Fuel\Core\DB::query("SELECT username FROM users WHERE username =$escaped_username")->execute();
}
}现在,这将返回一个Orm/Model_User对象,如下所示:
object(Model_User)#37 (11) {
["_is_new":protected]=>
bool(false)
["_frozen":protected]=>
bool(false)
["_sanitization_enabled":protected]=>
bool(false)
["_data":protected]=>
array(10) {
["id"]=>
string(1) "1"
["username"]=>
string(5) "admin"
["password"]=>
string(44) "UberSafePass"
["group"]=>
string(3) "100"
["email"]=>
string(16) "email@domain.com"
["last_login"]=>
string(10) "1398875694"
["login_hash"]=>
string(40) "9998e768da41821ae4c401359e797e1d96edfdb3"
["profile_fields"]=>
string(6) "a:0:{}"
["created_at"]=>
string(10) "1398868638"
["updated_at"]=>
string(1) "0"
}
["_custom_data":protected]=>
array(0) {
}
["_original":protected]=>
array(10) {
["id"]=>
string(1) "1"
["username"]=>
string(5) "admin"
["password"]=>
string(44) "VerySecretPassword"
["group"]=>
string(3) "100"
["email"]=>
string(16) "email@domain.com"
["last_login"]=>
string(10) "1398875694"
["login_hash"]=>
string(40) "9998e768da41821ae4c401359e797e1d96edfdb3"
["profile_fields"]=>
string(6) "a:0:{}"
["created_at"]=>
string(10) "1398868638"
["updated_at"]=>
string(1) "0"
}
["_data_relations":protected]=>
array(0) {
}
["_original_relations":protected]=>
array(0) {
}
["_reset_relations":protected]=>
array(0) {
}
["_view":protected]=>
NULL
["_iterable":protected]=>
array(0) {
}
}但在controller/admin和代码的其他部分中,它的访问方式如下:
Session::set_flash('success', e('Welcome, '.$current_user->username));很抱歉,如果这是一个愚蠢的问题,但是因为Orm查询方法返回我的数据,就像我展示的那样,然后油生成的控制器要求像这样访问它们,要么我做了什么愚蠢的事情,要么我没有看到什么。我必须补充说,我使用的是Fuelphp 1.7.1谢谢!
发布于 2014-05-01 10:13:41
您可以生成Model_User类:$ oil r fromdb:model users --no-migration
https://stackoverflow.com/questions/23394595
复制相似问题