2016-10-05 11 views
1

私は私のレジスタコントローラにコントローラからの形質を使用しようとしていますが、それはLaravel 5.3形質は見つかりませんでした

エラーメッセージを見つけるように見えることはできませんこんにちは:

Trait 'MailVerification' not found 

クラスします私は

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

    $this->sendVerification($mail); 
関数を呼び出すここでトレイトに

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; 

を使用したいですここ

iは

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('[email protected]'); 
      $message->to($mail); 
     }); 
     Session::flash('message', "Please check you're email to verify your account"); 

     return redirect('/'); 
    } 
} 

class MailController extends Controller 
{ 

からそれをインポートしようとしているクラスの特色である私は私のクラスの外形質を持っている、これが正しいかどうかは分かりませんが、それながら、それは私にエラーを与えていましたクラス内にあった。

+0

のようになりますか? – prateekkathal

+0

だから私は別のクラスの形質を持っていないはずですか? 私はそれを別々のファイルに入れますか? これは今行っているが、これが正しいかどうかわからない。 @prateekkathal –

+0

はい!形質は常に別々にする必要があります!私の答えに示唆されているように、あなたの特性を 'App \ Traits'フォルダに移動し、コントローラを別々にしておくべきです! .... – prateekkathal

答えて

1

あなたのコントローラの名前空間 RegisterControllerとMailVerificationが異なる...

だからあなたの特性は、また、あなたのRegisterController

use App\Http\Controllers\MailVerification; 

に次の行を追加する必要がありますあなたのコントローラーの代わりにApp\Traitsフォルダー内にあなたのすべての特性を置くことをお勧めします。可能であれば簡単な方法を試してみてください、次の:)

編集 -

これは、あなたがコントローラを登録する方法では、MailControllerがあなたの特性の内部で何をしているのです

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.... 
} 
+0

もし私がこのエラーを取得しようとすると。 'App \ Http \ Controllers \ Auth \ App \ Http \ Controllers \ MailVerification'が見つかりません –

+0

と私は\ App \ Http \ Controllers \ MailVerificationを使用する場合、 私は 'App \ Http \ Controllers \ MailVerification'が見つかりませんでした –

+0

あなたの質問に(あなたの)私のコメントに答えることができます。ツリービューで、フォルダとファイルの構造のスクリーンショットを表示できますか?また、試してみると、AuthとApp \ Http \ Controllersフォルダの外にRegisterControllerを置くことができますか? – prateekkathal

関連する問題