Я стараюсь, чтобы список задач мог упорядочивать список через фильтр, чтобы у меня был список на сегодня, список на завтра или список на неделю, поэтому я сделал свой контроллер задач способным принимать запросы и т. Д. через дизайн репозиторий шаблонов я принимаю запрос на красноречивый запрос:
задачи диспетчера:
class TaskController extends Controller
{
private $taskRepository;
public function __construct(TaskRepository $taskRepository)
{
$this->taskRepository = $taskRepository;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if(!empty($request)){
// dd($request);
$tasks = $this->taskRepository->all($request);
}else{
$tasks = $this->taskRepository->all();
}
return view('tasks.index', compact('tasks'));
}
}
репозиторий задач:
class TaskRepository implements RepositoryInterface
{
// model property on class instances
protected $task;
// Constructor to bind model to repo
public function __construct(Task $task)
{
$this->task = $task;
}
public function all(Request $request)
{
$sortBy = 'expired_at';
$order = Carbon::now();
$finish = null;
if($request)
{
if($request->has('today'))
{
$order = Carbon::today();
return Task::where($sortBy, $order)->get();
}
if($request->has('tomorow')){
$order = Carbon::tomorrow();
return Task::where($sortBy, $order)->get();
}
if($request->has('week'))
{
$order = Carbon::now()->startOfWeek();
$finish = Carbon::now()->endOfWeek();
return Task::whereBetween($sortBy, [$order, $finish])->get();
}
}else{
return Task::orderBy('order')->get();
}
}
чтобы закончить в моем индексе, у меня есть форма с использованием метода «получить»:
div>
<form action="{{ route('tasks.index') }}" class="flex justify-between items-center p-2">
<div>
<select name="orderByDate" id="">
@foreach(['today','tomorow', 'week'] as $orderDate)
<option value="{{ $orderDate }}">{{ ucfirst($orderDate) }}</option>
@endforeach
</select>
</div>
<div>
<button type="submit">Filter</button>
</div>
</form>
</div>
<ul class="my-5">
@foreach ($tasks as $task)
@if($task->order == 0)
<li class="flex text-red-600 justify-between p-2">
// task->name
// task-> date
// task-> edit
// task->delete
</li>
@else
<li class="flex justify-between items-center p-2">
// task->name
// task-> date
// task-> edit
// task->delete
</li>
@endif
@empty
<p>Pas de tâches aujourd'hui crée en une</p>
@endforelse
</ul>
@endsection
по-видимому, мой foreach не работает с массивом, поэтому, если у кого-то есть какие-то сведения о том, как мне подойти к этой проблеме, это будет живой заставкой?