Laravel по-русски

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

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

#1 05.09.2017 18:34:39

Передача параметров в контроллер из view

Что есть: форма, отправляющая данные в контроллер методом post.

Задача: сделать так, чтобы в зависимости от нажатой кнопки в запрос уходило определенное значение.

home.blade.php

<form action="{{ route('home.store') }}" method="post">
...
    <div class="form-group col-xs-12">
        <div class="col-md-12 text-center">
            <button class="btn btn-primary" name="admin" type="submit">Вызвать системного администратора</button>
            <button class="btn btn-primary" name="cleaner" type="submit">Вызвать уборщицу</button>
        </div>
    </div>
</form>

routes.php

Route::post('/home', [
    'uses' => 'HomeController@store',
    'as' => 'home.store'
]);

HomeController.php

public function store(Requests\TaskPublishRequest $taskPublishRequest, Task $task)
{
    $task = $task->createTask($this->request);
}

Task.php

static public function createTask($request)
    {
/* вот это не работает, и наверно вряд ли будет, так как неправильно передается параметр, что меня и интересует*/
        $role = 0;
        if($request->get('admin'))
            $role = 2;
        elseif($request->get('cleaner'))
            $role = 3;

        return parent::create([
            'role_id' => $role,
            'room_id' => $request->get('room_id'),
            'task_status_id' => 1
        ]);
    }

То есть при нажатии кнопки должно отправляться значение одного из полей task

p.s. Второй день как работаю/пытаюсь с Laravel.

Не в сети

#2 05.09.2017 19:48:36

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Передача параметров в контроллер из view

Нпдо добавить в форму {{ csrf_field() }}
И метод createTast статический

PHP
public function store(Requests\TaskPublishRequest $taskPublishRequestTask $task)
{
    
$task Task::createTask($taskPublishRequest);
}

И что за ошибка выходит?

Изменено TrueKanonir (05.09.2017 19:49:44)

Не в сети

#3 05.09.2017 21:10:44

Re: Передача параметров в контроллер из view

Нпдо добавить в форму {{ csrf_field() }}

Это есть

public function store(Requests\TaskPublishRequest $taskPublishRequest, Task $task)
{    
    $task = Task::createTask($taskPublishRequest);
}

так работает точно также, как и до этого, без явных ошибок, т.е. запись добавляется. но имя поля никак не передается, соответственно task не получает role_id

вот еще код из
TaskPublishRequest.php

    
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'room_id' => 'required',
            /*'role_id' => 'required'//при добавлении этого поля, запись просто не добавляется*/
        ];
    }

===============================
Проблема решена,

home.blade.php

<form action="{{ route('home.store') }}" method="post">
...
    <div class="form-group col-xs-12">
        <div class="col-md-12 text-center">
            <button class="btn btn-primary" name="role_id" value="2" type="submit">Вызвать системного администратора</button>
            <button class="btn btn-primary" name="role_id" value="3" type="submit">Вызвать уборщицу</button>
        </div>
    </div>
</form>

Task.php

static public function createTask($request)
    {
        return parent::create([
            'role_id' => $request->get('role_id'),
            'room_id' => $request->get('room_id')
        ]);
    }

Изменено Zarin (05.09.2017 22:35:48)

Не в сети

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