Laravel по-русски
Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
в какой-то момент команда >php artisan migrate стала выдавать такую ошибку
{"error":{"type":"Symfony\\Component\\Debug\\Exception\\FatalErrorException","message":"Class '' not found","file":"D:\\OpenServer\\domains\\schel4ok.dev\\vendor\\laravel\\framework\\src\\Illuminate\\Database\\Migrations\\Migrator.php","line":301}}на этот случай в документации есть ответ
Note: If you receive a "class not found" error when running migrations, try running the composer dump-autoload command.
делаю >composer dump-autoload
получаю Generating autoload files
потом опять >php artisan migrate - и та же самая ошибка
я попробовал импортировать файл прямо в routes.php и в результате на странице получил крякозябры
Route::get('xls', function ()
{
Excel::load('app/database/xls/categories.xlsx', function($reader)
{
$result=$reader->select(array('id', 'parent_id','level','title','sef','body',
'image','meta_title','keywords','description'))->get();
var_dump($result);
})->get();
}
);ты сделай migrate reset, а потом опять migrate
вот так
\views\template\topmenu.blade.php
<div class="topmenu">
<ul class="nav menu nav-pills">
{{ HTML::menu_active('fa fa-newspaper-o','/',' Новости') }}
{{ HTML::menu_active('fa fa-sitemap','pages/1',' Карта сайта') }}
{{ HTML::menu_active('fa fa-user','pages/2',' Админка') }}
{{ HTML::menu_active('fa fa-question','pages/3',' FAQ') }}
{{ HTML::menu_active('fa fa-globe','pages/4',' Ссылки') }}
</ul>
</div>здравствуйте,
Я хочу сделать заполнение БД из xlsx файла.
Нашел пакет maatwebsite/excel, но вообще не могу понять как им пользоваться.
кто-нибудь использовал этот пакет?
решил проблему, убрав первый слеш в остальных пунктах меню
надо вообще все эти таблицы объединить в одну и добавить таблицу юзеров и языков
Schema::create('articles', function($table)
{
$table->increments('id');
$table->string('source');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('lang_id')->unsigned();
$table->foreign('lang_id')->references('id')->on('langs');
$table->text('title');
$table->text('content');
$table->text('content_hide');
$table->timestamps();
});
Schema::create('users', function($table)
{
$table->increments('id');
$table->varchar('name');
$table->varchar('email');
});
Schema::create('langs', function($table)
{
$table->increments('id');
$table->varchar('lang');
});и еще добавить связи в моделях User, Lang и Article
еще видел в буржунете вариант URI::is вместо Request::is
это выдает ошибку Class 'URI' not found
пытаюсь сделать динамический класс active состояния меню, но класс active присваивается только пункту меню со ссылкой на главную страницу /
а остальные всегда неактивные
app\macros.php
HTML::macro('menu_active', function($class,$route,$name)
{
if(Request::is($route . '/*') OR Request::is($route))
{
$active ='<li class="active"><a class="'.$class.'" href="'.URL::to($route).'">'.$name.'</a></li>';
}
else
{
$active ='<li><a class="'.$class.'" href="'.URL::to($route).'">'.$name.'</a></li>';
}
return $active;
});\views\template\topmenu.blade.php
<div class="topmenu">
<ul class="nav menu nav-pills">
{{ HTML::menu_active('fa fa-newspaper-o','/',' Новости') }}
{{ HTML::menu_active('fa fa-sitemap','/pages/1',' Карта сайта') }}
{{ HTML::menu_active('fa fa-user','/pages/2',' Админка') }}
{{ HTML::menu_active('fa fa-question','/pages/3',' FAQ') }}
{{ HTML::menu_active('fa fa-globe','/pages/4',' Ссылки') }}
</ul>
</div>\views\template\template.blade.php
@include('template.topmenu')точно
спасибо
если использую файлы стилей с интернета, то все в порядке {{ HTML::style('//maxcdn.bootstrapcdn.com/bootswatch/3.3.1/readable/bootstrap.min.css') }}
а локальные файлы стилей на загружаются {{ HTML::style('public/css/frontend.css') }}
проверил исходный код страницы
<link media="all" type="text/css" rel="stylesheet" href="http://schel4ok.dev/public/css/frontend.css">
сам файл существует и не пустой, но если ввести в браузер адрес http://schel4ok.dev/public/css/frontend.css, то выдается ошибка
Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException
при вызове в браузере директории css тоже ошибка
и если пробую ввести путь к картинке ошибка
http://schel4ok.dev/public/img/pages/co … ster-z.jpg
это что надо маршруты настраивать для доступа к файлам?
супер совет. лучше вообще не писать, чем так
погуглил и вот тут нашел такую же проблему http://forumsarchive.laravel.io/viewtopic.php?id=3889
пару советов из этой темы реально помогли
вот этот код помог выводить всю строку из БД при вызове {{ $post->user }}
public function user()
{
return $this->belongsTo('User', 'id');
}но при вызове {{ $post->user->name }} всё равно ошибка Trying to get property of non-object (View: ...\app\views\post\showall.blade.php)
от этой ошибки почему-то спасает такой код
@if($post->user)
{{ $post->user->name }}
@endifИ сразу выводится имя юзера. Вот тут я вообще не понимаю. Код остался тот же самый. Просто добавилась проверка существования объекта.
Кто-нибудь понимает смысл этой операции?
вот в этом видео чувак рассказывает про самую простую связь таблиц http://www.youtube.com/watch?v=xIBST5vV … 39Y1tKl5DB
я сделал все так же как он рассказал
\model\Post.php
class Post extends Eloquent {
public function user()
{
return $this->belongsTo('User');
}
}\views\post\showall.blade.php
@extends('template.template')
@section('content')
@if(isset($posts) && count($posts))
@foreach ($posts as $post)
<section>
<a href="posts/{{ $post->id }}"><h3>{{ $post->title }}</h3></a>
<img src="{{ $post->image }}" alt="{{ $post->title }}" style="float:left;" />
<p>{{ Str::limit($post->body, 50) }}</p>
<p><a href="#">{{ $post->user }}</a></p>
<section style="clear:both;"></section>
</section>
@endforeach
@else
<p>Нет записей в блоге</p>
@endif
<?php echo $posts->links(); ?>
@stopТакой вариант у чувака в видео выводил целую строку из таблицы users.
У меня он выводит пустое место
<p><a href="#"> </a></p>Дальше он усложнил {{ $post->user->name }} и получил имя автора.
А у меня такой код привел к ошибке
Trying to get property of non-object (View: ...\app\views\post\showall.blade.php)
Таблица users у меня есть. В ней 2 юзера. В таблице постов проставлены id этих юзеров.
\app\database\migrations\2014_12_31_184209_create_posts_table.php
class CreatePostsTable extends Migration {
public function up()
{
Schema::create('posts', function($table)
{
$table->increments('id')->unsigned();
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('categories');
$table->string('sef', 50);
$table->string('title', 150);
$table->text('body');
$table->string('image', 300);
$table->integer('author')->unsigned();
$table->foreign('author')->references('id')->on('users');
$table->boolean('active', 100);
$table->string('meta_title', 50);
$table->string('keywords', 150);
$table->string('description', 150);
$table->timestamps();
});
}\app\database\migrations\2014_12_20_085806_create_users_table.php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateUsersTable extends Migration {
public function up() {
Schema::create('users', function ($table) {
$table->increments('id');
$table->string('email')->unique();
$table->string('name');
$table->timestamps();
});
}я пытался найти примеры блогов на laravel
но видимо я вбивал не тот запрос, потому что мне попадались только самые простые блоги вообще без категорий
я ничего не понял про этот Baum
сделал простой блог на ларавел 4.
хочу добавить в него категории для каждой статьи.
хочу сделать примерно так:
Route::get('/posts', 'PostController@categories'); - при вызове главной страницы блога должен строиться список категорий и статьи, принадлежащие корневой категории
Route::get('/posts/{category?}', 'PostController@category'); - при вызове одной из категории блога должен строиться список её подкатегорий и страниц
Route::get('/posts/{category?}/{id?}', 'PostController@getPost'); - ссылка на отдельную страницу блога (пока сделал только это)
основные вопросы:
1) как в контроллере сделать ссылку на список категорий
2) куда в БД засунуть поле "категория"? Прямо в таблицу с постами или в отдельную таблицу?
вся документация состоит из каких-то обрезков
тут в документации ничего нету
ну а где эти методы найти?
ну а как поместить в эту переменную одну строку из таблицы БД?
метод all() вытягивает сразу все строки таблицы
а как сделать, чтобы для каждой страницы из БД вытягивались description, keywords и title?
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html">
<title>{{ $content->title }}</title>
<meta name="description" content="{{ $content->description }}">
<meta name="keywords" content="{{ $content->keywords }}">
<meta name="robots" content="index,follow">
<meta name="author" content="schel4ok">
</head>
да. спасибо
начинаю осваивать laravel
попробовал сделать пробный пример отображения данных из таблицы users, описанный вот тут http://laravel.ru/docs/v4/quick
всё нормально получилось.
потом по аналогии попробовал сделать отображение данных из своей другой таблицы connectors
1) скопировал существующую таблицу из другой БД
2) создал файл app\models\Connectors.php
<?php
class Connectors extends Eloquent {
protected $table = 'connectors';
}
3) создал файл app\views\connectors.blade.php
@extends('layout')
@section('content')
<table>
@foreach ($connectors as $connector)
<tr><td>{{ $connector->id }}</td> <td>{{ $connector->title }}</td> <td>{{ $connector->description }}</td></tr>
@endforeach
</table>
@stop
4) в файле routes.php добавил маршрут
Route::get('connectors', function () {
$connectors = Connector::all();
return View::make('connectors')->with('connectors', $connectors);
});
но почему-то ничего не заработало
можешь подробно написать как ты сделал?
я тоже хочу так сделать, но не могу разобраться как