Учебное пособие по Laravel (Серия из 12 частей)
Вы можете скачать исходный код этого руководства здесь: https://www.techjblog.com/index.php/laravel-tutorial-for-beginners/
Теперь нам пора погрузиться в наш проект. Чтобы ознакомиться со всем, мы начнем с создания только домашней страницы. Если вы используете Voyager в качестве панели администратора, прочтите эту статью, но в этом нет необходимости что-либо делать. Потому что в Voyager есть встроенный раздел для основной информации о сайте. Мы поговорим о “Вояджере” в следующем посте.
Создайте первую модель
Сначала мы создаем модель с именем General и соответствующий файл миграции для хранения основной информации о нашем веб-сайте.
php artisan make:model General -m
Откройте файл миграции, который мы только что создали. Именно здесь мы определяем структуру нашей базы данных.
database/migrations/2020_10_03_162023_create_generals_table.php
id();
$table->timestamps();
});
} /**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('generals');
}
}
Общедоступная функция up() создает таблицу базы данных с именем генералы , а общедоступная функция down() удаляет таблицу базы данных с именем генералы если он уже существует.
Строка 17-18, эти команды создают столбцы внутри таблицы базы данных, и в Laravel доступно множество других типов столбцов. Ознакомьтесь с официальной документацией .
Теперь мы можем создать несколько других столбцов для этой таблицы.
Schema::create('generals', function (Blueprint $table) {
$table->id();
$table->char('website_title', 200);
$table->string('logo');
$table->text('description')->nullable();
$table->timestamps();
});
Строка 3, в этом столбце хранится заголовок вашего веб-сайта, а максимальная длина установлена равной 200.
Строка 4, в этом столбце хранится логотип, который мы загрузим позже. Новичкам это может показаться странным. База данных фактически не хранит загруженное вами изображение, но вместо этого она хранит путь, указывающий на загруженное вами изображение, поэтому оно должно быть типа строка .
И строка 5, вы можете заметить, что в конце есть что-то еще. Это называется модификатором столбца, и он определяет дополнительную информацию о столбце. В этом случае он делает этот столбец описание обнуляемым.
Теперь мы можем внести некоторые изменения в нашу модель.
app/Models/General.php
class General extends Model
{
use HasFactory; /**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'website_title', 'logo', 'description'
];
}
Мы также можем определить соответствующую таблицу базы данных здесь. Если не определено, Laravel просто будет искать таблицу базы данных, имя которой является формой множественного числа модели. Если вы решите использовать другую таблицу базы данных, укажите ее здесь следующим образом:
protected $table = 'my_table';
Настройка Laravel Nova
Затем мы можем настроить Laravel Nova для модели General . Создайте новый ресурс:
php artisan nova:resource General
Импортируйте некоторые необходимые пакеты полей.
use Illuminate\Http\Request; use Laravel\Nova\Fields\ID; use Laravel\Nova\Fields\Text; use Laravel\Nova\Fields\Textarea; use Laravel\Nova\Fields\Image; use Laravel\Nova\Http\Requests\NovaRequest;
Как мы уже говорили ранее, в Laravel 8 появилась новая независимая папка для моделей, поэтому нам нужно отразить ее здесь, иначе Nova не сможет ее найти.
/**
* The model the resource corresponds to.
*
* @var string
*/
public static $model = \App\Models\General::class;
Измените $title на website_title_заголовок :
/**
* The single value that should be used to represent the resource when being displayed.
*
* @var string
*/
public static $title = 'website_title';
И, наконец, определите поля:
/**
* Get the fields displayed by the resource.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function fields(Request $request)
{
return [
ID::make(__('ID'), 'id')->sortable(),
Text::make('Website Title'),
Image::make('Logo'),
Textarea::make('Description'),
];
}
Nova “изменит регистр” отображаемого имени поля, чтобы определить базовый столбец базы данных. Однако, при необходимости, вы можете передать имя столбца в качестве второго аргумента методу поля make :
Text::make('Name', 'name_column'),
Теперь пришло время заполнить основную информацию о нашем веб-сайте.
Создайте контроллер индекса
Создайте контроллер индекса с помощью команды artisan:
php artisan make:controller IndexController
Создайте метод index() :
app/Http/Controllers/IndexController.php
first(); return view('home', [
'website' => $website
]);
}
}
Во-первых, мы импортировали модель General , которую нам нужно использовать в этом контроллере. Внутри метода index() мы извлекаем первую запись в General , которую мы только что создали. И, наконец, мы возвращаем его в домашний вид, о котором мы поговорим позже.
Маршрутизация
Эта часть должна быть легкой, поэтому я не буду вдаваться в подробности.
Route::get('/', [IndexController::class, 'index']);
Создайте домашний вид
Чтобы ваш сайт выглядел лучше, мы будем использовать здесь Bootstrap. Я предполагаю, что вы уже знакомы с CSS и HTML:
{{$website['website_title']}}
Homepage
{{$website['description']}}
Представление также довольно простое. Здесь также будет работать другой синтаксис, {{$website->website_title}} , который я использовал в предыдущей версии этого руководства.
Еще одна вещь, о которой стоит упомянуть, находится в строке 19. Вот как мы можем отобразить изображение, загруженное пользователем. Подробная информация о хранилище файлов находится здесь: https://laravel.com/docs/8.x/filesystem#file-urls
Откройте свой браузер и перейдите по ссылке http://localhost/
В следующих двух статьях мы создадим основные компоненты нашего проекта. Начиная с создания моделей и настройки панели администратора.
Статьи по теме
Как сделать Ваш Сервер Более Безопасным
Учебник По Laravel Для Начинающих
Учебник По Django Для Начинающих
Создайте Конвертер единиц измерения с помощью Vue.js
Учебное пособие по Laravel (Серия из 12 частей)
Оригинал: “https://dev.to/ericnanhu/laravel-8-tutorial-5-create-the-home-page-3ad3”