Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 25.06.2020 10:29:11

Как взять нужные данные, пришедшие из формы и занести данные в модель

<?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>

Не в сети

#2 25.06.2020 10:57:36

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

Это мануал? Или в чем вопрос?

Не в сети

#3 25.06.2020 11:05:26

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

вопрос как сделать?

Не в сети

#4 25.06.2020 11:16:11

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

Так ты же взял с реквеста данные и занес в объект модели и сохранил их

    $post = User::add($request->all());
        $request->input('fio');
        $request->input('age');
        $request->input('about');
        $post->save();

Изменено sergdsv (25.06.2020 11:16:49)

Не в сети

#5 25.06.2020 11:41:34

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

add метода нет

Не в сети

#6 25.06.2020 11:50:17

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

    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');
    }

может так?

Не в сети

#7 25.06.2020 11:56:22

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

$task = new User;
        $task->fio = $request->input('fio');
        $task->age = $request->input('age');
        $task->about = $request->input('about');
        $task->save();

Не в сети

#8 25.06.2020 14:19:01

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

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)

ошибки тогда

Не в сети

#9 25.06.2020 14:27:53

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

Ну так поле name не должно быть пустым.

Что у тебя в миграции для таблицы users?

Не в сети

#10 25.06.2020 14:32:30

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

<?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');
    }
}

Не в сети

#11 25.06.2020 14:38:43

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

Так а где поля `fio`, `age`, `about`?

Ты что-то совсем не то делаешь.

Не в сети

#12 25.06.2020 14:39:19

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

Напиши мне в телеграм

@sergdsv

Не в сети

#13 25.06.2020 21:18:26

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

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');

Не в сети

#14 26.06.2020 08:31:07

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

<?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 пишет

Не в сети

#15 26.06.2020 09:50:09

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

/settings/store

Не в сети

#16 26.06.2020 10:13:10

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

У тебя же нет такого маршрута /settings/store
У тебя же {name} еще надо указывать как обязательный параметр

Если надо что бы был не обязательный то пиши {name?}

Вот пример

Route::get('user/{name?}', function ($name = null) {
    return $name;
});

Route::get('user/{name?}', function ($name = 'John') {
    return $name;
});

Не в сети

#17 26.06.2020 11:33:19

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

Route::get('/settings', function ($name = null){
        redirect()->route("settings");
    });

Route [settings] not defined.

Не в сети

#18 26.06.2020 11:41:05

Re: Как взять нужные данные, пришедшие из формы и занести данные в модель

Route [settings] not defined.

Здесь имеется ввиду имя роута которое у тебя нигде не задано

И вообще то что ты написал не имеет смысла. Смысл редиректить сам на себя? Если бы ты еще и имя роута задал то у тебя бы все зациклилось.

Тебе надо почитать о передачи параметров в контроллер. Для стора надо передавать ID или чтото еще что бы найти запись которую ты будешь редактировать.
Ее можно передавать либо через роут как ты пытаешься делать и у тебя это будет обязательным параметрои или скрытым инпутом в форме.... Тогда будешь его ловить в реквесте.

Не в сети

Подвал раздела