Подскажите, пожалуйста, конструкцию вывод страниц из базы данных в Laravel. Например, site.ru/hello-world
В первую очередь, необходимо настроить подключение к вашей базе данных. Для этого в Laravel >= 5 есть конфигурационный файл .env
(находится в корне проекта)
После настройки нужно создать файл миграций, следуя соглашению. К примеру, вам нужна таблица "магазин" - значит называть её нужно во множественном числе (магазины - прим. перевод: shops). Для этого открываете вашу консоль, переходите (с помощью команды cd) в директорию, в которой установлен фреймворк, и выполняете команду:
php artisan make:migration create_shops_table
Эта команда создаст файл примерно с таким именем:
ваш.сайт\database\migrations\2018_03_12_175226_create_shops_table.php
Открываете этот файл в вашей среде разработки, и записываете в метод up()
названия полей. Для примера, можете просто скопировать этот код - для запуска и демонстрации этого будет достаточно:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateShopsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('shops', function (Blueprint $table) {
$table->increments('id');
$table->string('text');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('shops');
}
}
После сохранения изменений в файле миграций, нужно выполнить в консоли следующую команду (запустить миграции):
php artisan migrate
Эта команда создаст в базе данных таблицу shops
с несколькими полями.
Далее, нужно создать модель Shop
. Для этого выполняете в консоли команду:
php artisan make:model Shop
После создания модели (на данном этапе её не нужно редактировать) запускаете в консоли удобный инструмент для работы с базой данных Тинкер, он понадобится для записи в базу наших значений, которые позже мы выведем в браузер:
php artisan tinker
В открывшемся интерфейсе пишете следующий код (в конце каждого выражения нажимаете "Ввод")
Создаёте экземпляр класса Shop:
$shop = new App\Shop;
Сохраняете тестовый текст в свойстве text
экземпляра класса Shop:
$shop->text = 'Текст для записи в базу (Hello, World! - или что вам было нужно...)';
Выполняете запись в базу с помощью метода save()
(если запись успешна, после нажатия на "Ввод" вы увидите true):
$shop->save();
После этого интерфейс Тинкера нужно закрыть командой exit
- при этом вы увидите сообщение Exit: Goodbye.
Далее в файле ваш.сайт\routes\web.php
нужно создать маршрут, по которому фреймворк будет вызывать необходимый контроллер. Для примера, назовём контроллер Hello
, тогда наш маршрут будет выглядеть так:
Route::get('hello-world', 'HelloController@index');
Далее в консоли создаём контроллер с помощью команды
php artisan make:controller HelloController
Контроллер будет создан по адресу: ваш.сайт\app\Http\Controllers\HelloController.php
Открываем его в IDE для редактирования, и вставляем в него этот код:
<?php
namespace App\Http\Controllers;
use App\Shop;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
$shops = Shop::all();
return view('hello', compact('shops'));
}
}
После сохранения изменений останется создать файл-шаблон hello.blade.php
в директории ваш.сайт\resources\views\
, и прописать в нём этот код:
@foreach ($shops as $shop)
<div class="body">{{ $shop->text }}</div>
@endforeach
Всё, что вам останется сделать, это запустить ваш маршрут по адресу: http://ваш.сайт/hello-world
Если всё сделано правильно, в браузере вы увидите текст: Текст для записи в базу (Hello, World! - или что вам было нужно...)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Вот я не понимаю, почему, когда делают какой-нибудь метод, то у него получается много вложений?
Пытался делать это простым file_get_contents(); список видео получаю, но получаю всего 30, остальные не получаю так как они подгружаются ajax-омПринял...