Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Версия Laravel:5.2
Версия PHP: 5.6
Операционная система и её версия: Windows 10 x64
Задача, что должно происходить _в целом_, техническое задание:
Как реализуется сортировка отображаемых данных на странице категории.
Сортировку при выборке реализовал, но как ее изменять уже в самом представлении не могу сообразить. При этом что-бы пагинация работала корректно.
Код:
Routes:
Route::resource('clinics', 'ClinicsController',[
'parameters' => [
'clinics' => 'alias'
]
]);
app\Http\Controllers\ClinicsController.php
namespace App\Http\Controllers;
use App\Repositories\Actions_clinicsRepository;
use App\Repositories\ClinicsRepository;
use App\Repositories\DirectionsRepository;
use App\Repositories\BranchesRepository;
use Illuminate\Http\Request;
use App\Http\Requests;
use Config;
class ClinicsController extends SiteController
{
protected $clinics_rep;
protected $branches_rep;
protected $directions_rep;
protected $actions_clinics_rep;
public function __construct(Actions_clinicsRepository $actions_clinics_rep, ClinicsRepository $clinics_rep, DirectionsRepository $directions_rep, BranchesRepository $branches_rep)
{
parent::__construct(new \App\Repositories\MenusRepository(new \App\Menu));
$this->actions_clinics_rep = $actions_clinics_rep;
$this->clinics_rep = $clinics_rep;
$this->directions_rep = $directions_rep;
$this->branches_rep = $branches_rep;
$this->template = env('THEME').'.clinics';
}
public function index()
{
$clinics = $this->getClinics();
$directions = $this->getDirections();
$actions_clinic = $this->getActions();
$total_actions_clinic = $this->getTotalActions();
$actions_branches = $this->getActions_branches();
$content = view(env('THEME').'.clinics_content')->with('clinics', $clinics)->with('directions', $directions)
->with('actions_clinic', $actions_clinic)->with('total_actions_clinic', $total_actions_clinic)
->with('actions_branches', $actions_branches)->render();
$this->vars = array_add($this->vars, 'content', $content);
return $this->renderOutput();
}
protected function getClinics(){
$clinics = $this->clinics_rep->get(['id','name','alias','district','metro','short_description','image','rating','plus'],FALSE,'name',TRUE);
if($clinics){
$clinics->load('branches','actions');
}
return $clinics;
}
protected function getDirections(){
$directions = $this->directions_rep->get('*',FALSE,'name');
return $directions;
}
protected function getActions(){
$actions = $this->actions_clinics_rep->get(['image','name','clinic_id','short_description'], Config::get('settings.category_actions'), 'created_at');
if($actions){
$actions->load('actions_clinic');
}
return $actions;
}
protected function getTotalActions(){
$total_actions = $this->actions_clinics_rep->get(['id']);
$total_actions = count($total_actions);
return $total_actions;
}
protected function getActions_branches(){
$actions_branches = $this->branches_rep->get('*');
if($actions_branches){
$actions_branches->load('actions_branches');
}
return $actions_branches;
}
}
App\Repositories\Repository.php
namespace App\Repositories;
use Config;
abstract class Repository{
protected $model = FALSE;
public function get($select = '*', $take = FALSE, $sort = 'created_at', $pagination = FALSE){
$builder = $this->model->select($select);
if($sort == 'sort_order' or $sort == 'name'){
$builder->orderBy($sort, 'asc');
}else{
$builder->orderBy($sort, 'desc');
}
if($pagination){
return $this->check($builder->paginate(Config::get('settings.paginate')));
}
if($take){
$builder->take($take);
}
return $this->check($builder->get());
}
protected function check($result){
if($result->isEmpty()){
return FALSE;
}
$result->transform(function ($item, $key){
if(is_string($item->image) && is_object(json_decode($item->image)) && (json_last_error() == JSON_ERROR_NONE)) {
$item->image = json_decode($item->image);
}
return $item;
});
return $result;
}
}
app\Clinic.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Clinic extends Model
{
//
public function branches()
{
return $this->hasMany('App\Branche');
}
public function actions()
{
return $this->hasMany('App\Actions_clinic');
}
}
Не в сети
Не легче ли использовать dedicate query string filtering то сто Джефри Вей делал? Там пара методов всего, и все четко пашет
Не в сети
Не легче ли использовать dedicate query string filtering то сто Джефри Вей делал? Там пара методов всего, и все четко пашет
Спасибо, буду документацию искать...)
Не в сети
Страницы 1