如何使用Laravel中的控制器访问模型功能?

时间:2014-10-29 04:39:13

标签: php laravel

你能帮我解决这个问题吗?我正在使用Laravel创建自己的登录过程。顺便说一句,我在Laravel还是新手,而且我真的没有足够的知识。

我的场景是我在控制器内创建了一个带有参数的代码,可以访问模型函数。此模型函数将查找数据库中的用户数据是否正确或匹配。但我还没有创造它。我只是想看看我的参数中的数据是否可以在模型中访问。

问题出在模型中我无法访问参数值。

这是我的代码:

在我的控制器中

public function login() {

    $rules = array(
        'employee_id'       =>  'required',
        'employee_password' =>  'required'
    );

    $validate_login = Validator::make(Input::all(), $rules);

    if($validate_login->fails()) {

        $messages = $validate_login->messages();

        return Redirect::to('/')->withErrors($messages);

    } else {

        $userdata = array(
            'id'        =>  Input::get('employee_id'),
            'password'  =>  Hash::make(Input::get('employee_password'))
        );

        $validateDetail = Employee::ValidateLogin($userdata); //pass parameter to model

    }

}

这是模型功能

public function scopeValidateLogin($data) 
{
    fd($data); //fd() is my own custom helper for displaying array with exit()
}

在scopeValidateLogin()函数中,我打算使用Query Builder来验证登录。

这是我的路线

Route::model('employee','Employee');

Route::get('/','EmployeesController@index');
Route::get('/register', 'EmployeesController@register');

Route::post('/login','EmployeesController@login');
Route::post('/handleRegister', function() 
            {

                $rules = array(
                    'emp_code'      =>  'numeric',
                    'lastname'      =>  'required|min:2|max:15',
                    'firstname'     =>  'required|min:2|max:20',
                    'middlename'    =>  'min:1|max:20',
                    'password'      =>  'required|min:8|max:30',
                    'cpassword'     =>  'required|same:password'
                );

                $validate_register = Validator::make(Input::all(), $rules);

                if($validate_register->fails()) {

                    $messages = $validate_register->messages();

                    return Redirect::to('register')
                                        ->withErrors($messages)
                                        ->withInput(Input::except('password','cpassword'));

                } else {

                    $employee = new Employee;

                    $employee->emp_code     = Input::get('emp_code');
                    $employee->lastname     = Input::get('lastname');
                    $employee->firstname    = Input::get('firstname');
                    $employee->middlename   = Input::get('middlename');
                    $employee->gender       = Input::get('gender');
                    $employee->birthday     = Input::get('birthday');
                    $employee->password     = Hash::make(Input::get('password'));

                    $employee->save();

                    Session::flash('success_notification','Success: The account has been successfully created!');

                    return Redirect::action('EmployeesController@index');

                }

            }
        );

现在运行fd($ data)后,我的浏览器加载了一系列数组,然后就会崩溃。 我不知道发生了什么,但我认为它正在向我的模型发送多个请求。

我是否以正确的方式访问控制器内的模型?或者有这方面的最佳方法吗?

1 个答案:

答案 0 :(得分:0)

您正在错误地使用MVC框架。您应该使用模型内部的方法来评估控制器内部的输入和登录。