#php #laravel
#php #laravel
Вопрос:
На моей домашней странице в моем проекте Laravel у меня есть модальный, который содержит форму.
<form id="profilesubmitform" method="POST" action="/profilesubmit">
<div class="form-group">
<input type="textarea" class="form-control" id="bio" placeholder="Enter your bio here">
<small class="form-text text-muted">Tell us about yourself!</small>
</div>
<div class="form-group">
<input type="text" class="form-control" id="profileurl" placeholder="Website/Link">
<small class="form-text text-muted">Add your site, Carrd, Youtube channel, anything!</small>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
И, конечно, в моем web.php файл Я проложил маршрут следующим образом:
Route::post('/profilesubmit', 'AppHttpControllersProfilesController@profileSubmit');
Это относится к функции в моем ProfilesController, которая должна принимать данные из формы и сохранять их в моей базе данных.
public function profileSubmit(Request $request){
$user = Auth::user();
$user->bio = $request->bio;
$user->profileurl = $request->profileurl;
$user->save();
return redirect('home');
}
}
$user
Переменная должна получать аутентифицированного (вошедшего в систему) пользователя в базе данных. Цель всего этого в том, чтобы они могли отправлять биографию и URL, которые в конечном итоге будут помещены в их профиль, но пока они просто помещаются в столбцы ‘bio’ и ‘profileurl’ в таблице.
Однако, когда я отправляю форму, она ничего не добавляет. Примечательно, что в нем говорится, что «save()» — это неопределенный метод, который является странным, потому что он попадает только как ошибка, когда я определяю $user как «Auth::user();». Любая помощь?
Комментарии:
1. Прочитайте об
name
атрибуте2. Вы можете написать код внутри модели
3. Это немного расплывчато. Как насчет этого атрибута ..?
Ответ №1:
Вам нужно добавить name
атрибут для каждого <input/>
Только элементы формы с атрибутом name будут передавать свои значения при отправке формы.
Также добавьте {{ csrf_field() }}
для AntiCSRF
здесь я переписал ваш код.
<form id="profilesubmitform" method="POST" action="/profilesubmit">
{{ csrf_field() }}
<div>
<input type="textarea" id="bio" name="bio" placeholder="Enter your bio here">
<small>Tell us about yourself!</small>
</div>
<div>
<input type="text" id="profileurl" name="profileUrl" placeholder="Website/Link">
<small>Add your site, Carrd, Youtube channel, anything!</small>
</div>
<button type="submit">Submit</button>
</form>
Комментарии:
1. Я получаю сообщение об ошибке нарушения целостности после отправки с этим новым кодом. Я подумал, что это может быть просто из-за csrf, но я добавил и этот бит.