2015-11-23 4 views
2

У меня есть контроллер UserController для аутентификации новых пользователей и регистрации их. У меня есть два метода: index для входа и create для регистрации нового пользователя. Но метод Create не работает, ошибки не возникает, но данные не поступают в таблицу базы данных.laravel 5.1 регистрационная база данных регистрации пользователя

Вторым является форма signup после перезагрузки. signup вид нет нет.

userController код:

<?php namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use Auth; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Redirect; 
use Illuminate\Contracts\Hashing\Hasher; 
use Illuminate\Http; 
use Illuminate\Support\Facades\Input; 
use Hash; 

class UserController extends Controller 
{ 
    public function __construct(){ 
     $this->middleware('auth'); 
    } 
    public function index() 
    { 
     $cred = Input::only('email','password'); 
     var_dump($cred); 
     if(Auth::attempt($cred)){ 
      return Redirect::intended('index'); 
     }else{ 
      $error = "Username or password is incorrect."; 
      return Redirect::to('/signup'); 
     } 
    } 
    public function create() 
    { 
     $user = new \App\User; 
     $user->firstname = Input::get('firstname'); 
     $user->lastname = Input::get('lastname'); 
     $user->username = Input::get('username'); 
     $user->email = Input::get('email'); 
     $user->password = Hash::make(Input::get('password')); 
     $user->designation = Input::get('profile_pic'); 
     $user->save(); 
     return view('index'); 
    } 

Маршруты: код

Route::get('/', function() { 
    return view('index'); 
}); 
Route::get('index', function() { 
    return view('index'); 
}); 
Route::get('login', function() { 
    return view('login'); 
}); 
Route::post('login', '[email protected]'); 
Route::get('/signup', function(){ 
    return view('signup'); 
}); 
Route::post('/signup', ['uses' => '[email protected]']); 

User Модель:

<?php 

namespace App; 

use Illuminate\Auth\Authenticatable; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Foundation\Auth\Access\Authorizable; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

class User extends Model implements AuthenticatableContract, 
            AuthorizableContract, 
            CanResetPasswordContract 
{ 
    use Authenticatable, Authorizable, CanResetPassword; 

    protected $table = 'users'; 

protected $fillable = ['firstname', 'lastname','username','email', 'password','photo']; 

    protected $hidden = ['password', 'remember_token']; 
} 
+0

Можете ли вы поделиться своей моделью (Пользователь)? –

+0

Вы задали поля, присваиваемые массой, на модели? http://laravel.com/docs/5.1/eloquent#mass-assignment – benJ

+0

Нет массового задания – user2479930

ответ

0

Я считаю, что метод попасть на входной фасад был удален и теперь использует вместо этого используется метод ввода.

Поскольку вы используете Laravel, одна из интересных функций - Красноречивый и ваши модели. Вы можете написать свой код, как это и это гораздо более чистый ...

use App\User; 

public function create(Request $request) { 
    $input = $request->only('firstname', 'lastname', 'username', 'email', 'password', 'profile_pic'); 
    return User::create($input); 
} 

В вашем случае, вы наращивая экземпляр модели и сохраняется в базу данных позже. Это полезно только в том случае, если вы хотите выполнять другие проверки, не сохраняя модель в базе данных. Если вы настаиваете, чтобы сделать это по-своему, вам нужно вызвать метод ввода на фасаде, как это:

$user->firstname = Input::input('firstname'); 

Я надеюсь, что помогает! : D

Смежные вопросы