Получить входные значения в laravel formRequests - PullRequest
0 голосов
/ 08 ноября 2019

Это мой FormRequest класс

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use URL;
class CaseStudyUpdateRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
      $id = $this->request->get('cspid');
      dump($this);
      dump($id);
      $prev_url = URL::previous();
      $url_arr = explode('/', $prev_url);
      $data = $this->request->all();
      dump($data);
        $rules = [
            // 'post_title' => 'required|min:15|max:255|unique:case_study_posts,title,'.$id,
            'summary' => "required|array|min:1",
            'total_blocks' => "not_in:0",
            'category' => 'required',
            'specialities' => 'required',
        ];
        if($url_arr[4] === "edit-for-request") {
          // $rules['edit_comment'] = 'required';
                if(!empty($data)) {
                  $rules['edit_comment'] = 'required';
                    $totalBlocks = $data['total_blocks'];
                    foreach(range(1, $totalBlocks) as $i){
                        if(array_key_exists("description-$i", $data)) {
                          // $rules['edit_comment'] = 'required';
                            $rules["description-$i"] = 'required|min:15';
                        } elseif(array_key_exists("image-$i", $data) || array_key_exists("image_title-$i", $data) || array_key_exists("image_description-$i", $data)) {
                          // $rules['edit_comment'] = 'required';
                            $rules["image-$i"] = (array_key_exists("old-img-$i", $data) && !array_key_exists("image-$i", $data)?"":"required|mimes:jpeg,bmp,jpg,png|max:2048");
                            $rules["image_title-$i"] = "required_with:image-$i|required|min:5|max:30";
                            $rules["image_description-$i"] = "required_with:image_title-$i|required|min:15|max:120";
                        }
                    }
                }
        }

        return $rules;
    }

    public function messages() {
        return [
           'total_blocks'=> 'Please select text/images block to case studys',
        ];
    }

    /**
     * Get custom attributes for validator errors.
     *
     * @return array
     */
    public function attributes() {
        return [
            'post_title' => 'Case Study Title',
        ];
    }


}
?>

Просмотр страницы

На моей странице просмотра у меня есть это,

@section('scripts')
@parent
   {{ Html::script('vendor/jsvalidation/js/jsvalidation.js') }}
   {!! JsValidator::formRequest('App\Http\Requests\CaseStudyUpdateRequest', '#edit_post_form'); !!}  
   ....  
   ....   

Контроллер

В Контроллере я добавил

use App\Http\Requests\CaseStudyUpdateRequest;   

и в вызываемую функцию

public function editCaseStudy(CaseStudyUpdateRequest $request) {

Здесь,у меня есть блоки изображений и блоки описания, скажем, image1, image2, image3, description1, description2, ... и т. д. Я хочу проверить эти поля, поэтому мне нужно получить эти входные значения в файле formRequest. Но он показывает пустой массив, когда я печатаю dump($this->request->all());

Как мне получить входное значение в стороне formRequest? Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 ноября 2019
public function editCaseStudy(CaseStudyUpdateRequest $request) {
$image1=$request->image1;
$description1=$request->description1;
.
.
}
0 голосов
/ 08 ноября 2019

Класс Illuminate\Foundation\Http\FormRequest расширяет класс Illuminate\Http\Request. Поэтому all() или любой из обычных методов предоставит вам доступ к параметрам запроса из GET или POST.

, например, вместо этого:

$id = $this->request->get('cspid');

Использованиеодин из них:

$id = $this->cspid;
$id = $this->get("cspid");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...