Я создал свой компонент с опцией «perPage», которая принимает число и устанавливает лимит работ для отображателя на странице …
public function defineProperties()
{
return [
'perPage' => [
'title' => 'Number os works per page',
'description' => 'How many works do you want to display per page?',
'default' => 9,
'validationPattern' => '^[0-9]+$',
'validationMessage' => 'Only numbers allowed'
],
'sortOrder' => [
'title' => 'Order of Works',
'description' => 'How do you want to order the actors',
'type' => 'dropdown',
'default' => 'newest',
],
];
}
Это прекрасно работает с реализацией GET … но в моем проекте мне нужно везде внедрять AJAX, поэтому мне нужно загружать страницы через AJAX, и мне нужно знать, какое число было установлено для компонента … Как я могу получить это число?
//my layout code
function onOpenWorkList()
{
$this['works'] = Category::where('slug', input('slug'))->first();
$this['categories'] = Category::all();
$this['active_category'] = input('slug');
$this['perPage'] = ""; // HERE IS THE CODE
return [
'.home_categories' => $this->renderPartial('work_list_categories_post'),
'.container' => $this->renderPartial('work_list')
];
}
В вашем файле компонента:
public $perPage;
/* ... */
public function init()
{
$this->perPage = $this->property('perPage');
}
Затем в макете вы можете сделать это:
function onOpenWorkList()
{
$this['works'] = Category::where('slug', input('slug'))->first();
$this['categories'] = Category::all();
$this['active_category'] = input('slug');
$_component = $this->components['builderList']; // Get the component
$this['perPage'] = $_component->perPage; // Get $perPage from component
return [
'.home_categories' => $this->renderPartial('work_list_categories_post'),
'.container' => $this->renderPartial('work_list')
];
}
Лично я бы просто поставил onOpenWorkList()
функция в файле компонента (а не в коде компоновки), так как к нему все равно можно получить доступ через ajax, когда он находится там так же легко, и тогда вам не придется извлекать компонент, как в примере выше.
Получение свойства из Компонента Builder в области PHP следует использовать в функции onEnd:
function onEnd()
{
$component = $this->page->components['builderDetails']->record
}