Laravel проверить, есть ли у запроса коллекция - PullRequest
0 голосов
/ 04 мая 2018

Я хочу выполнить оператор if для каждого из моих опубликованных запросов и, если они есть, сделать что-то другое.

Когда я умираю dump $request->all У меня есть массив, который выглядит следующим образом;

  "_token" => "MMRFBAgyThsIHzITzT26Qwdp4L6HDV0JTPGs6h"
  "page_name" => "Travel"
  "heading" => "Travel Europe"
  "textarea" => "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostru ▶"
  "seo_title" => "travel"
  "seo_description" => "travel"
  "attribute_1" => "Food"
  "attribute_2" => "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
  "attribute_3" => "Hotels"
  "attribute_6" => "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
  "attribute_5" => "Events"
  "attribute_4" => "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
  "attribute_7" => null
  "attribute_8" => null
  "attribute_9" => UploadedFile {#233 ▶}

Данные будут другими, поэтому я не могу написать ничего статического, например: $request->input('attribute_9')

Вот как я сейчас работаю с атрибутами, которые являются неизвестными запросами.

$input = $request->all();

foreach($input as $key=>$value) {

    if(strstr($key,'attribute_')) {
        $i = str_replace("attribute_", "", $key);


        if (!empty($value)) {   
            if ($value instanceof Illuminate\Http\UploadedFile) {
                dd('lets have a collection...');
            }

            Attribute::where('id', $i)->update(['value' => $value]);
        } else{
            Attribute::where('id', $i)->update(['value' => '']);
        }

    }
}

Вы можете видеть, что я пытался проверить $value, используя instanceOf, но это не сработало. Оператор if никогда не верен, и страница просто возвращается.

Пример представления ввода атрибута -

@if($comp_attr['data_type'] == 'file')
   <div class="form-grp img-form" style="width: {{ $comp_attr['width'] }}%;">
    <label>Banner Image</label>
        <span class="img-hold">
            {{ $banner }}
        </span>
    <input type="{{ $comp_attr['field_type'] }}" name="attribute_{{ $comp_attr['id'] }}" />
   </div>
@else
    <div class="form-grp" style="width: {{ $comp_attr['width'] }}%;">
        <label>{{ $comp_attr['label'] }}</label>
        <input type="{{ $comp_attr['field_type'] }}" name="attribute_{{ $comp_attr['id'] }}" value="{{ $comp_attr['value'] }}" />
    </div>
@endif

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

вместо

name="attribute_{{ $comp_attr['id'] }}"

Попробуйте

name="attributes[{{ $comp_attr['id'] }}]"

Обратите внимание на новые 's' ^ и скобки по обе стороны от {{ }}

Используя скобки, мы преобразуем его в ассоциативный массив, ключ которого задается переменной blade.

Тогда на стороне php вы можете сделать что-то вроде этого:

foreach($request->get('attributes') as $i => $value)
{
     ...
}
0 голосов
/ 04 мая 2018

Я полагаю, вы пытаетесь получить $_FILES

Таким образом, вы можете получить все файлы, используя

$request->allFiles();

Это вернет вам все файлы в запросе. тогда вы можете выполнить любое действие над ним.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...