Есть много возможных решений. Я даю вам два, которые IMO являются лучшими:
1: Создать черту и использовать ее в каждом компоненте
Я люблю использовать черты, они избегают большого количества избыточности и могут быть легко вызванывезде:
trait PaginationTrait
{
const PAGE_NAME = 'your_global_value'
public function paginate($query, $perPage, $columns = [''], $page_name = null)
{
return $query->paginate($perPage, $columns, $page_name ?: self::PAGE_NAME);
}
}
Это решение в любом случае требует, чтобы вы передали в качестве входных данных экземпляр Builder, и может вызвать проблемы с логикой. Итак, давайте перейдем к следующему решению
2: файлы конфигурации
Просто установите переменную в существующем файле конфигурации или в новом файле конфигурации:
// Example: app.php
return [
// [...]
'page_name' => 'your_custom_value' // or env('APP_PAGE_NAME', 'your_custom_value'),
// [...]
];
И вВаш контроллер вы можете получить значение следующим образом:
public function index() {
// [...]
$result = MyModel::paginate($per_page, $columns, config('app.page_name'));
}
3: App \ Http \ Controllers \ Controller
Третье решение является самым простым. Установите константу в вашем App\Http\Controllers\Controller
классе (как я писал для части черты) и по правилам ООП она будет наследоваться всем вашим контроллерам:
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
const PAGE_NAME = 'your_global_value';
}
И в вашем контроллере:
public function index() {
// [...]
$result = MyModel::paginate($per_page, $columns, self::PAGE_NAME);
}
По моему мнению, если вам просто нужно установить эту глобальную переменную, решения 2 и 3 являются лучшими ... Если вам нужно создать пользовательскую нумерацию страницлогика, тогда я думаю, что создание определенной Черты или Класса - хороший выбор