2016-05-13 3 views
0

私は最新のアプリケーションにLaravel Sparkを使用しています。登録時にテーブルの列にランダムなコードを挿入する必要があります。私にユーザを挿入するための場所コードであると仮定Laravel\Spark\Http\Controllers\Auth\RegisterController;Laravel Sparkでユーザーを登録するときにさらにデータを挿入するには

に見出される

/** 
* Handle a registration request for the application. 
* 
* @param RegisterRequest $request 
* @return Response 
*/ 
public function register(RegisterRequest $request) 
{ 
    Auth::login($user = Spark::interact(
     Register::class, [$request] 
    )); 

    event(new UserRegistered($user)); 

    return response()->json([ 
     'redirect' => $this->redirectPath() 
    ]); 
} 

:私はこのコードのブロックを見つけたコードを掘りのLOT後

データベースが発生しています。しかし、私の人生のためにconfirmation_codeという名前の列に、13sfet1201のようなものを埋め込む方法はありません。

私はこれにこだわりましたので、助けてください。あなたは次の操作を行うことができますこれを回避するには、事前に

おかげで、

アンディ

+0

これは役に立ちますか? https://spark.laravel.com/docs/1.0/customization希望する振る舞いを実装する、あなた自身のために適切なクラスを取り替えることは可能ですか? – haakym

+0

@haakymを見ていただきありがとうございました。私は元々見ていましたが、私が望んでいたものがそれを使って処理されるかどうかは完全には分かっていませんでした。 'Laravel \ Spark \ Repositories'の' UserRepository'のように、 。私はちょうどすでに存在するものの中の余分なフィールドのための私のロジックを追加して、うまくいくようです:) –

+1

素晴らしい!あなたがうまく働いてうれしい。 – haakym

答えて

1

わかりましたので、:

UserRepository.php呼ばLaravel\Spark\Repositoriesにあるファイルがあります。これは、新しいユーザーを作成するためのロジックが処理される場所です。このファイルには

次のブロック表示されます:魔法のように

$user->forceFill([ 
    'name' => $data['name'], 
    'email' => $data['email'], 
    'username' => $data['username'], 
    'confirmation_code' => $data['confirmation_code'], 
    'password' => bcrypt($data['password']), 
    'last_read_announcements_at' => Carbon::now(), 
    'trial_ends_at' => Carbon::now()->addDays(Spark::trialDays()), 
])->save(); 

作品;)

0

$user->forceFill([ 
    'name' => $data['name'], 
    'email' => $data['email'], 
    'password' => bcrypt($data['password']), 
    'last_read_announcements_at' => Carbon::now(), 
    'trial_ends_at' => Carbon::now()->addDays(Spark::trialDays()), 
])->save(); 

を私はそうのように、私は必要なものを合わせて、それを修正

Sparkでこれを行う推奨される方法は、SparkServiceProviderのユーザー作成メソッドをオーバーライドすることでした。 Sparkにはこれを可能にする特別な組み込みメソッドがあります。アプリ/プロバイダ/ SparkServiceProvider.phpで

あなたがブート()メソッドにこのような何かを追加することができます:あなたはおそらくも、ユーザデータのためのカスタム検証を追加することになるでしょう

 Spark::createUsersWith(function ($request) { 
      $user = Spark::user(); 

      // trim these form fields 
      $fields = ['name', 'email', 'password', 'timezone', 'referral_code']; 
      $data = array_map('trim', $request->only($fields)); 

      // now add user 
      $user->forceFill([ 
       'name' => $data['name'], 
       'email' => $data['email'], 
       'password' => bcrypt($data['password']), 
       'tzone' => $data['timezone'], 
       'referred_by' => $data['referral_code'], 
       'last_read_announcements_at' => Carbon::now(), 
       'trial_ends_at' => Carbon::now()->addDays(Spark::trialDays()), 
      ])->save(); 

      // here you can queue notification email to user and 
      // all that post-registration stuff, or you could fire an event 
      // and add listener to handle this 

      return $user; 
     }); 

。前のスニペットと同じように、booted()メソッドにルールを追加してください:

 Spark::validateUsersWith(function ($request) { 
      $rules = [ 
       'name' => 'required|max:255', 
       'email' => 'required|email|max:255|unique:users', 
       'password' => 'required|min:6|confirmed', 
       'timezone' => 'required|timezone', 
       'terms' => 'required|accepted', 
       'referral_code' => 'alpha_num', 
      ]; 

      return $rules; 
     }); 
+0

これはコアファイルの更新の影響を受けますか?私は1年前にスパークに触れていないので、どのようにその設定を覚えていないことができます。 –

+1

いいえ、すべての変更はapp/Providers/SparkServiceProvider.phpに行きます。これは編集するものです。アップデートはこれでまったく影響を受けません...コードを少し掘り下げて、コアファイルを編集する必要がなくてもSparkのほとんどすべてをオーバーライドすることができます。 – ivanhoe

関連する問題