Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SettingsController extends Controller
{
public function edit()
{
$user = Auth::user();
return view('settings', ['user'=>$user]);
}
public function store(Request $request)
{
$this->validate($request, [
'age' => 'required|numeric|min:18',
'fio' => 'required|max:120|different:about',
'about' => 'required|max:1000|different:fio',
]);
$post = User::add($request->all());
$request->input('fio');
$request->input('age');
$request->input('about');
$post->save();
return redirect()->route('settings');
}
}
<code lang="php">
<form action="/settings/store" method="POST">
{{ csrf_field() }}
<?php
use Illuminate\Support\MessageBag;
/** @var MessageBag $errors */
?>
<div><input type="text" name="age" placeholder="Укажите возраст" id="age"></div>
<? if($errors->first("age") != "") echo "<div class='alert'>".$errors->first("age")."</div>"; ?>
<div><input type="text" name="fio" placeholder="Укажите ФИО"></div>
<? if($errors->first("fio") != "") echo "<div class='alert'>".$errors->first("fio")."</div>"; ?>
<div><textarea rows="10" cols="45" name="about" placeholder="описание"></textarea></div>
<? if($errors->first("about") != "") echo "<div class='alert'>".$errors->first("about")."</div>"; ?>
<input type="submit" value="Отправить">
</form>
</code>
Не в сети
Это мануал? Или в чем вопрос?
Не в сети
вопрос как сделать?
Не в сети
Так ты же взял с реквеста данные и занес в объект модели и сохранил их
$post = User::add($request->all());
$request->input('fio');
$request->input('age');
$request->input('about');
$post->save();
Изменено sergdsv (25.06.2020 11:16:49)
Не в сети
add метода нет
Не в сети
public function store(Request $request)
{
$this->validate($request, [
'age' => 'required|numeric|min:18',
'fio' => 'required|max:120|different:about',
'about' => 'required|max:1000|different:fio',
]);
$task = new User;
$request->input('fio');
$request->input('age');
$request->input('about');
$task->save();
return redirect()->route('settings');
}
может так?
Не в сети
$task = new User;
$task->fio = $request->input('fio');
$task->age = $request->input('age');
$task->about = $request->input('about');
$task->save();
Не в сети
Illuminate \ Database \ QueryException (HY000)
SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value (SQL: insert into `users` (`fio`, `age`, `about`, `updated_at`, `created_at`) values (gfjhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh, 18, 654453, 2020-06-25 11:16:35, 2020-06-25 11:16:35))
Previous exceptions
SQLSTATE[HY000]: General error: 1364 Field 'name' doesn't have a default value (HY000)
ошибки тогда
Не в сети
Ну так поле name не должно быть пустым.
Что у тебя в миграции для таблицы users?
Не в сети
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
Не в сети
Так а где поля `fio`, `age`, `about`?
Ты что-то совсем не то делаешь.
Не в сети
Напиши мне в телеграм
@sergdsv
Не в сети
Route [settings] not defined.
пишет
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::group(['middleware' => 'auth'], function(){
Route::get('/settings{name}', 'SettingsController@edit');
// dd("stop");
Route::post('/settings/store', 'SettingsController@store');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Не в сети
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::group(['middleware' => 'auth'], function(){
Route::get('/settings', 'SettingsController@edit');
// dd("stop");
Route::post('/settings/store/{name}', 'SettingsController@store');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
404 пишет
Не в сети
/settings/store
Не в сети
У тебя же нет такого маршрута /settings/store
У тебя же {name} еще надо указывать как обязательный параметр
Если надо что бы был не обязательный то пиши {name?}
Вот пример
Route::get('user/{name?}', function ($name = null) {
return $name;
});
Route::get('user/{name?}', function ($name = 'John') {
return $name;
});
Не в сети
Route::get('/settings', function ($name = null){
redirect()->route("settings");
});
Route [settings] not defined.
Не в сети
Route [settings] not defined.
Здесь имеется ввиду имя роута которое у тебя нигде не задано
И вообще то что ты написал не имеет смысла. Смысл редиректить сам на себя? Если бы ты еще и имя роута задал то у тебя бы все зациклилось.
Тебе надо почитать о передачи параметров в контроллер. Для стора надо передавать ID или чтото еще что бы найти запись которую ты будешь редактировать.
Ее можно передавать либо через роут как ты пытаешься делать и у тебя это будет обязательным параметрои или скрытым инпутом в форме.... Тогда будешь его ловить в реквесте.
Не в сети