2014-09-26 2 views
0

Я новичок в программировании. Я создал базовую форму внутри views/register.blade.php вот такКак вставить данные в базу данных Laravel?

  @section('content') 
<h1>Registration Form</h1><hr> 
<h3>Please insert the informations bellow:</h3> 
{{Form::open(array('url'=>'test/register','method'=>'post'))}} 
<input type="text" name="username" placeholder="username"><br><br> 
<input type="text" name="email" placeholder="email"><br><br> 
<input type="password" placeholder="password"><br><br> 
<input type="submit" value="REGISTER NOW!"> 
{{Form::close()}}@stop 

У меня есть контроллер. как это

  public function create() 
     { 
      $user= Input::all(); 
       $user = new User; 
       $user->username = Input::get('username'); 
       $user->email = Input::get('email'); 
       $user->password = Input::get('password'); 
       $user->save(); 

      return Redirect::back(); 
     } 

Вот мой маршрут:

Route::get('test/register', array('uses'=>'[email protected]')) 

Я не могу зарегистрировать пользователей через форму. Не могли бы вы предложить мне, как это сделать?

+0

Что вы хотите сказать? Что происходит? Вы получаете какие-либо ошибки? –

+0

Убедитесь, что модель 'User' настроена правильно. http://laravel.com/docs/4.2/eloquent – castis

+0

Создает ли запись? Глядя сюда, у вас должна быть небольшая ошибка, но она не будет мешать. –

ответ

5

Ошибка MethodNotAllowedHttpException означает, что маршрут существует, но метод HTTP (GET) неверен. Вы должны изменить его POST:

Route::post('test/register', array('uses'=>'[email protected]')); 

Кроме того, вам нужно хэш паролей:

public function create() 
{ 
    $user = new User; 

    $user->username = Input::get('username'); 
    $user->email = Input::get('email'); 
    $user->password = Hash::make(Input::get('password')); 
    $user->save(); 

    return Redirect::back(); 
} 

И я удалил строку:

$user= Input::all(); 

Потому что в следующей команде вы заменить его содержание на

$user = new User; 

Для отладки входа, вы можете, в первой строке вашего контроллера:

dd(Input::all()); 

Он будет отображать все поля ввода.

+0

Я сделал это. Тем не менее у него есть ошибка.Ошибка: SQLSTATE [23000]: нарушение ограничения целостности: 1048 Колонка «пароль» не может быть нулевой (SQL: insert into 'users' (' username', 'email',' password', 'updated_at',' created_at') значения (sss, [email protected],, 2014-09-26 19:43:23, 2014-09-26 19:43:23)) –

+0

Теперь у вас другая проблема, поле вашего пароля пуста! –

+0

Да. Но я вставил свой пароль. Почему он отображается пустым? –

0

Первый метод, который вы можете попробовать это

$department->department_name = $request->department_name; 
$department->status = $request->status; 
$department->save(); 

Другой способ вставки записи в базу данных с создания функции

$department = new Department;   
// Another Way to insert records 
$department->create($request->all()); 

return redirect('admin/departments'); 

Вы должны установить filledby в модели отдела

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Department extends Model 
{ 
    protected $fillable = ['department_name','status']; 
} 
+0

От создания новой миграции до создания формы, а затем вставки записи в базу данных, с примером кода и выходом http://www.devtrainings.com/2016/05/laravel-eloquent-insert-row-or-add.html –

0

убедитесь, что вы используете POST для вставки данные. На самом деле вы использовали GET.

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