Laravel 5.3未发现特征

时间:2016-10-05 19:10:47

标签: php laravel traits

你好我试图在我的寄存器控制器中使用来自控制器的特性,但它似乎无法找到它

错误消息:

Trait 'MailVerification' not found

我想要使用特质的类

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
    use RegistersUsers;
    use MailVerification;

我在这里调用函数

 protected function create(array $data)
 {
    $mail = $data['email'];

    $this->sendVerification($mail);

这是我尝试从

导入它的类中的特征
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Mail\TestMail;
use Illuminate\Support\Facades\Mail;
use App\Http\Controllers\Controller;
use Session;

trait MailVerification
{
    public function sendVerification($mail)
    {
        $verification_code = str_random(30);
        Mail::send('mail.verify', ['verification_code' => $verification_code, 'mail' => $mail], function ($message) use ($mail)
        {
            $message->from('test@laravel.com');
            $message->to($mail);
        });
        Session::flash('message', "Please check you're email to verify your account");

        return redirect('/');
    }   
}

class MailController extends Controller
{

我在课堂之外有这个特点我不知道这是否正确但是在课堂上给我一个错误。

1 个答案:

答案 0 :(得分:1)

控制器的命名空间 RegisterController 和您的特性 MailVerification 是不同的......

因此,您必须将此行添加到 RegisterController

use App\Http\Controllers\MailVerification;

另外,我建议您将所有特征放在App\Traits文件夹而不是控制器中。如果可能,请尝试使用更简单的方法:)

编辑 -

这是你注册控制器应该是什么样的

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use App\Http\Controllers\MailVerification;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{
    use RegistersUsers, MailVerification;

    //Your code here....
}