Категории
Итак, в последнем уроке нам удалось добавить форму категории, которая позволила нам добавлять категории в базу данных, но мы все еще не можем видеть доступные категории (добавленные категории), поэтому мы собираемся запросить базу данных и получить категории, а затем визуализировать их на столе (используя возможности начальной загрузки) в категориях, также нам нужно иметь возможность управлять доступными в настоящее время категориями (удалить или изменить), и этот шаг будет рассмотрен в следующем уроке о том, как использовать ajax для достижения этого .
Перво-наперво Сначала нам нужно получить категории из нашей базы данных в виде массива, поэтому в CategoryController методом index() мы извлекаем категории, упорядоченные по метке времени created_at.
public function index()
{
$categories = Category::orderBy('created_at', 'desc')->get();
//We use the With method to pass data from controller to the view
return view('pages.category')->with('categories', $categories);
}
поэтому мы получаем категории и передаем их в представление с помощью метода with(), который принимает пары (ключ, значение).
Теперь в категории HTML/PHP мы отображаем категории в таблице после проверки наличия хотя бы одной категории, поэтому мы используем @if и @endif в блейд-шаблон для выражения обычного оператора PHP if
<div id="categories-table" class="table-responsive">
@if(count($categories) > 0)
<table class="table">
<tr>
<th>ID</th>
<th>Category</th>
<th>Author</th>
<th>Created At</th>
<th>Updated At</th>
<th>Edit</th>
<th>Remove</th>
</tr>
@foreach($categories as $i=>$category)
<tr>
<td>{{ $i + 1 }}</td>
<td>{{ $category->name }}</td>
<td>{{ $category->author }}</td>
<td>{{ $category->created_at }}</td>
<td>{{ $category->updated_at }}</td>
<td><a data-js="open-edit"><span id="{{ $category->id }}" class="btn btn-warning">Edit</span></a></td>
<td><a data-js="open-remove"><span id="{{ $category->id }}" class="btn btn-danger">Remove</span></a></td>
</tr>
@endforeach
</table>
@endif
</div>
как вы знаете, мы используем {{ " To echo Things → " }}, так что это просто сделает вашу жизнь проще, также мы используем здесь цикл @foreach, как и любой другой цикл, мы отображаем каждую категорию с кнопками Edit и Remove для управления категории, мы рассмотрим этот шаг в следующем уроке, используя (AJAX с Laravel).
Теперь вы можете попробовать добавить новую категорию, и вы увидите, что она будет указана в таблице текущих категорий, также вы можете отобразить сообщение, сообщающее пользователю (Нет доступных категорий) для лучшего взаимодействия с пользователем.
Сообщения
Поэтому, если вы собираетесь сделать свою CMS немного более мощной, вам нужно будет добавить сообщения для информирования пользователя о том, что на самом деле происходит за кулисами, если есть ошибки или просто показать сообщение об успешном завершении (например: Категория успешно добавлена ), поэтому Пользователь будет более удовлетворен, увидев эти сообщения, и это называется Взаимодействие с пользователем (UX).
Итак, для этого мы добавим новый файл, назовем его messages.blade.php и поместим его в папку inc. Итак, в laravel по умолчанию есть коллекция, содержащая сообщения об ошибках, которые могут возникнуть во время определенного процесса, для этого мы может отображать ошибки, зацикливая массив ошибок
@if(count($errors) > 0)
@foreach($errors->all() as $error)
<div class="alert alert-danger">{{ $error }}</div>
@endforeach
@endif
также нам нужно получить сообщения сеанса. Итак, допустим, что мы создали экземпляр категории и присвоили ему имя категории, вам может потребоваться вернуть сообщение об успехе или ошибке, поэтому мы используем сеанс для передачи данных из одна страница на другую
поэтому мы отображаем данные сеанса
@if(session('Error'))
<div class="alert alert-danger">{{ session('Error') }}</div>
@endif
@if(session('Success'))
<div class="alert alert-success">{{ session('Success') }}</div>
@endif
и это все для отображения данных сеанса.
Чтобы показать сообщение об успешном добавлении категории! использовать в методе Store()
// We Use Flash method to display the message only once on page reload
//The Session is an Associative Array with (Key, Value) Pairs
session()->flash('Success', 'Category Named: ' . $category->name . ' Addedd Successfully!');
Теперь попробуйте добавить новую категорию. Будет получено сообщение об успешном выполнении, что все работает нормально, поэтому использование сообщений очень важно как для разработчика, так и для пользователя.
В следующем учебном пособии мы добавим функциональность к кнопке «Изменить и удалить» для управления категориями.