Laravel по-русски

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

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

#1 12.08.2018 12:03:45

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

Вернуть новый объект при каждом вызове callable

Добрый день.
Столкнулся с проблемой, и что то не как не могу ее решить.
Есть класс Form, в нем есть метод tab:

PHP
    /**
     * Add tabs to form
     *
     * @param callable $tab
     * @return $this
     */
    
public function tab(callable $tab)
    {
        
$section = new Tab($this->model);

        
call_user_func($tab$section);

        
$this->tabs[] = $section;

        return 
$this;
    }

И есть отдельный класс, в котором я добавляю форму и табы к ней:

PHP
$form->url('store')->method('post')->tab(function (Tab $tab) {
    
$tab->title('first tab')->fields(function(FormField $field) {
        
$field->input('text''test_input');
    });
})->
tab(function (Tab $tab) {
   
$tab->title('second tab')->fields(function(FormField $field) {
       
$field->input('number''price');
   });
});

Если добавлять табы каждый раз используя функцию tab вот так ->tab(function (Tab $tab){})->tab(function (Tab $tab){})->tab(function (Tab $tab){})..., то табы добавляются как надо. Но я хочу не писать каждый раз эту функцию, а примерно так:

PHP
$form->url('store')->method('post')->tab(function (Tab $tab) {
    
$tab->title('first tab')->fields(function(FormField $field) {
        
$field->input('text''test_input');
    });
    
$tab->title('second tab')->fields(function(FormField $field) {
        
$field->input('number''price');
    });
    
$tab->title('third tab')->fields(function(FormField $field) {
        
$field->input('search''search_term');
    });
});

Но так, в массив с табами добавляется только последний таб third tab. Как сделать что бы в массив с табами добавлялся новый обьект при каждом вызове

PHP
$tab->title('second tab')->fields(function(FormField $field) {
    
$field->input('number''price');
});

?

Изменено TrueKanonir (12.08.2018 12:04:59)

Не в сети

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