从laravel中的trait函数返回数组

时间:2017-12-08 13:10:17

标签: php laravel

我有一个问题,一个 从函数返回数组或变量时出错 这是我的代码:

Traits \ UserTrait.php

中的

 public function login()
             {
               $errors   = new MessageBag; // initiate MessageBag
               $username = Input::get('email');
               $password = Input::get('password');
              return compact('username', 'password','email');
             }

和 在 UserController.php

       public function __construct(user $model)
        {
         $this->model=$model;

        }
       public function login()
        {
            $this->model->login();
          if(filter_var($username, FILTER_VALIDATE_EMAIL)) {
            $user = User::where('email',$request['email'])->first();
            if($user && $user->email_active != 1)
            {
                $errors = new MessageBag(['email' => [__('auth.emailVerify')]]);
                return Redirect::back()->withErrors($errors)->withInput(Input::except('password'));
            } 
}
}

实际上在用户模型中,我放了use UserTrait;

2 个答案:

答案 0 :(得分:1)

你可能正在调用一个返回某些东西的方法,但你实际上并没有对返回做任何事情。 (从方法返回并不会将变量神奇地导入调用者范围)

$this->model->login(); // never assigning the result to anything

当然,您未定义$username,因为在UserController@login中没有名为$username的变量。

这至少会得到username密钥并将其分配给变量:

$data = $this->model->login();
$username = $data['username'];

答案 1 :(得分:0)

这不是特征的工作方式,它们不会神奇地填充缺失的变量。 在线

if(filter_var($username, FILTER_VALIDATE_EMAIL)) {

您使用的是$username,但未设置。