Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#26 Laravel 5.x » breadcrumbs » 27.09.2015 18:21:20

schel4ok
Ответов: 0

Для breadcrumbs мне надо получать переменную $request->path() и извлекать из неё часть после последнего / при помощи explode.
Вопрос в том где получать $request, обрабатывать его и выводить переменную $bread таким образом, чтобы потом $bread был доступен при любом роуте.

#27 Laravel 5.x » вопрос по gulp-image-resize » 29.08.2015 19:00:50

schel4ok
Ответов: 0

Никак не могу понять как пользоваться скриптом gulp-image-resize.

Описание скудное. В ветке проекта на гитхабе вопрос задать нельзя - сразу перекидывает на grunt-image-resize.
Сначала получал ошибку из-за того, что не поставил слеш в начале пути src.
То есть вот это   gulp.src('resources/img/*')   приводит к ошибке  Error: write EPIPE
А вот это нет    .pipe(gulp.dest('public/img/resize-640'));

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: Error: write EPIPE
    at finish (d:\OpenServer\domains\steklo.dev\node_modules\gulp-image-resize\node_modules\gulp-gm\index.js:40:21)
    at gm.<anonymous> (d:\OpenServer\domains\steklo.dev\node_modules\gulp-image-resize\node_modules\async\lib\async.js:485:30)
    at gm.emit (events.js:118:17)
    at gm.<anonymous> (d:\OpenServer\domains\steklo.dev\node_modules\gulp-image-resize\node_modules\gulp-gm\node_modules\gm\lib\getters.js:70:16)
    at Socket.cb (d:\OpenServer\domains\steklo.dev\node_modules\gulp-image-resize\node_modules\gulp-gm\node_modules\gm\lib\command.js:314:16)
    at Socket.g (events.js:199:16)
    at Socket.emit (events.js:107:17)
    at onwriteError (_stream_writable.js:317:10)
    at onwrite (_stream_writable.js:335:5)
    at WritableState.onwrite (_stream_writable.js:105:5)

Потом исправил код вот так и ошибки больше нет.

gulp.task('img-resize-640', function () {
  gulp.src('/resources/img/*')
    .pipe(imageResize({ width : 640 }))
    .pipe(gulp.dest('/public/img/resize-640'));
});

Но и результата тоже не появляется - папка resize-640 с маленькими картинками не создается

$ gulp img-resize-640
[18:56:36] Using gulpfile d:\OpenServer\domains\steklo.dev\gulpfile.js
[18:56:36] Starting 'img-resize-640'...
[18:56:36] Finished 'img-resize-640' after 11 ms

#29 Re: Laravel 5.x » установка Laravel на Debian » 04.08.2015 18:15:57

у меня в public вообще только файлы

root@server:/var/www/mysite.ru# ls -l
total 172
drwxr-xr-x  9 www-data www-data   4096 Aug  3 14:20 app
-rwxr-xr-x  1 www-data www-data   1646 Aug  3 14:20 artisan
drwxr-xr-x  3 www-data www-data   4096 Aug  3 14:20 bootstrap
-rwxr-xr-x  1 www-data www-data   1201 Aug  3 14:20 composer.json
-rwxr-xr-x  1 www-data www-data 105057 Aug  3 14:20 composer.lock
drwxr-xr-x  2 www-data www-data   4096 Aug  3 14:20 config
drwxr-xr-x  5 www-data www-data   4096 Aug  3 14:20 database
-rwxr-xr-x  1 www-data www-data    503 Aug  3 14:20 gulpfile.js
-rwxr-xr-x  1 www-data www-data    159 Aug  3 14:20 package.json
-rwxr-xr-x  1 www-data www-data     87 Aug  3 14:20 phpspec.yml
-rwxr-xr-x  1 www-data www-data    899 Aug  3 14:20 phpunit.xml
drwxr-xr-x  2 www-data www-data   4096 Aug  3 16:47 public
-rwxr-xr-x  1 www-data www-data   1928 Aug  3 14:20 readme.md
drwxr-xr-x  5 www-data www-data   4096 Aug  3 14:20 resources
-rwxr-xr-x  1 www-data www-data    567 Aug  3 14:20 server.php
drwxrwxrwx  5 www-data www-data   4096 Aug  3 14:20 storage
drwxr-xr-x  2 www-data www-data   4096 Aug  3 14:20 tests
drwxr-xr-x 28 www-data www-data   4096 Aug  3 14:20 vendor
root@schel4ok:/var/www/mysite.ru/public# ls -l
total 8
-rwxr-xr-x 1 www-data www-data    0 Aug  3 14:20 favicon.ico
-rwxr-xr-x 1 www-data www-data 1786 Aug  3 14:20 index.php
-rwxr-xr-x 1 www-data www-data   24 Aug  3 14:20 robots.txt

#30 Laravel 5.x » установка Laravel на Debian » 03.08.2015 15:15:32

schel4ok
Ответов: 9

всем привет

Я начал тренироваться с установкой на выделенном сервере ОС Debian 7 x32.
Установил Apache 2.2.22 и php 5.5.27 и доп модули
apt-get install apache2 php5 libapache2-mod-php5 php5-fpm mysql-server mysql-client php5-mysql  php5-curl  curl phpmyadmin

потом поставил composer, nodejs
установил laravel командой
laravel new /var/www/mysite.ru

поменял пользователя и права доступа
cd /var/www/mysite.ru
chown -R www-data:www-data .
chmod -R 755 .
chmod -R 777 storage


в файле /etc/apache2/sites-available/mysite.ru

<VirtualHost *:80>
	ServerAdmin webmaster@mysite.ru
        ServerName mysite.ru 
        ServerAlias www.mysite.ru
	DocumentRoot /var/www/mysite.ru/public
	DirectoryIndex index.html index.htm index.php
</VirtualHost>

потом делаю символьную ссылку /etc/apache2/sites-enabled/mysite.ru

и получаю 403 Forbidden
You don't have permission to access / on this server.

может что-то с правами не так?

#31 Laravel 5.x » gulp не копирует lightbox » 14.06.2015 15:06:56

schel4ok
Ответов: 1

опять проблема с gulp
поставил себе  lightbox в vendor/bower_components/lightbox

далее хочу скопировать стили в папку resources/assets/css
    .copy('vendor/bower_components/lightbox/сss', 'resources/assets/css/lightbox') 

но не получается
все остальные команды копирования срабатывают, но только эта не копирует файлы

и ошибки никакой не возникает в процессе выполнения команды gulp
просто в папке resources/assets/css не появляется новых файлов и всё
я уже даже пробовал копировать не в css, а в less
еще пробовал копировать не папку целиком, а файлы по-отдельности
но ничего не работает

вообще не понимаю в чем дело
как это можно продиагностировать?

#32 Laravel 5.x » ссылки для следующего и предыдущего материала в блоге » 03.05.2015 01:16:10

schel4ok
Ответов: 0

хочу сделать ссылки для следующего и предыдущего материала в блоге и почему-то получаю ошибку.

выдает ошибку Trying to get property of non-object (View: D:\OpenServer\domains\...\resources\views\news\item.blade.php)
ошибка пропадает если убрать код с переменными $previous и  $next

Похожий код нормально работал на ларавел 4


routes.php

Route::get('news/{title}', 'NewsController@showItem');

NewsController.php

<?php namespace App\Http\Controllers;
use App\News;

class NewsController extends Controller {

	public function showItem($title)
	{
		$news = News::where('sef', '=', $title)->get();

			foreach ($news as $news) // access user properties here
			{	
        		$previous = News::where('id', '<', $news->id)->orderBy('id', 'desc')->firstOrFail();
				$next = News::where('id', '>', $news->id)->orderBy('id', 'asc')->firstOrFail();
			}

		return view('news.item')
					->withNews($news)
					->withPrevious($previous)
					->withNext($next);
	
	}

}

\resources\views\news\item.blade.php

@extends('layout.main')

@foreach ($news as $news)


@section('title')
{{ $news->metatitle }}
@stop

@section('keywords')
{{ $news->metakey }}
@stop

@section('description')
{{ $news->metadesc }}
@stop



@section('content')



	<article>

        <i class="fa fa-calendar text-primary"> {{ date('d M Y', strtotime($news->created_at)) }} </i>
        <h1 class="page-header margin-0">{{ $news->title }}</h1>


       	<div class="page-content">
       	{{ HTML::image($news->image, $alt = $news->title, array('class' => 'thumbnail img-responsive pull-left')) }}
       	<div class="fulltext">{{ $news->fulltext }} 
         </div>
       	<div class="clearfix"></div>
       	</div>


    </article>

@endforeach


<ul class="pager">
@if (isset($previous) and $previous->category_id === $news->category_id )
<li class="previous"><a href="{{ $previous->sef }}">← Пред новость</a></li>
@endif

<li><a href="/news">&uarr; Наверх</a></li>

@if (isset($next) and $next->category_id === $news->category_id )
<li class="next"><a href="{{ $next->sef }}">След новость →</a></li>
@endif
</ul>


@stop

#33 Re: Laravel 5.x » gulp не копирует в папку public\build » 03.04.2015 16:36:14

нашел обходной путь
замена значения переменных пути к файлам шрифтов до компиляции css


app.less
@import "bootstrap/bootstrap.less";
@import "fontawesome/font-awesome.less";
@import "local-variables.less";

local-variables.less
@icon-font-path:      "../../fonts";
@fa-font-path:        "../../fonts";

#34 Laravel 5.x » gulp не копирует в папку public\build » 30.03.2015 22:18:09

schel4ok
Ответов: 3

почему-то не работает команда
  .copy('resources/assets/fonts', 'public/build/fonts')

соответственно приходится каждый раз вручную копировать туда папку со шрифтами, потому что команда version каждый раз опустошает папку build

  .version([
        'public/css/app.css',
        'public/js/all.js'
        ])

#35 Re: Laravel 5.x » view()->composer не работает » 27.03.2015 17:24:01

сиди и получай удовольствие от своей важности - я и сам разберусь
ты и так ответил на другой вопрос и это такое же хамство

#36 Re: Laravel 5.x » view()->composer не работает » 27.03.2015 13:25:10

лучше вообще ничего не отвечать, чем писать пургу
у меня вопрос был вообще не об этом

я смог получить результат при помощи непосредственной вставки кода в AppServiceProvider
app\Providers\AppServiceProvider.php

	public function boot()
	{
		view()->composer('modules.mainmenu', function($view)
		{
			$view->withTree(Category::descendantsOf(1)->toTree());
		});

	}

но мне хочется этот код вывести в контроллер
view()->composer('modules.mainmenu', 'CategoryController@mainmenu');

а контроллер никак не хочет опознаваться Class CategoryController does not exist
то есть скорее всего AppServiceProvider не видит контроллер, хотя я добавлял вот это

use App\Http\Controllers\CategoryController;

#37 Laravel 5.x » view()->composer не работает » 26.03.2015 21:14:39

schel4ok
Ответов: 8

мне надо сделать отображение меню на всех страницах

app\Providers\AppServiceProvider.php

class AppServiceProvider extends ServiceProvider {
	public function boot()
	{
		view()->composer('modules.mainmenu', 'CategoryController@mainmenu');

	}
}

app\Http\Controllers\CategoryController.php

<?php namespace App\Http\Controllers;

use App\Category;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class CategoryController extends Controller {

	public function mainmenu()  
	{
        $result = Category::descendantsOf(1)->toTree();
	return view('modules.mainmenu')->withTree($result);

	}
}

resources\views\layout\main.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
<body>
@include('modules.mainmenu')
</body>
</html>

resources\views\modules\mainmenu.blade.php

<ul class="nav navbar-nav">
@foreach ($tree as $node)
<li class="dropdown"><a href="{{ $node->sef }}" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ $node->title }} <span class="caret"></span></a>
	<ul class="dropdown-menu" role="menu">
  		@foreach ($node->children as $child)
  		<li><a href="{{ $child->sef }}">{{ $child->title }}</a></li>
		@endforeach
	</ul>
</li>
@endforeach					
</ul>

получаю ошибку
3/3
ErrorException in Container.php line 776:
Class CategoryController does not exist (View: D:\OpenServer\domains\steklo.dev\resources\views\layout\main.blade.php) (View: D:\OpenServer\domains\steklo.dev\resources\views\layout\main.blade.php)


вывод списка меню на отдельной странице при помощи Route::get('categories', 'CategoryController@mainmenu');  нормально работает, но через view()->composer что-то не так

#38 Laravel 5.x » gulp file » 08.03.2015 22:06:16

schel4ok
Ответов: 0

Мне надо заменить файл variables.less в bootstrap
А команда copy не заменяет файл, если он существует

elixir(function(mix) {
mix
    .copy('vendor/bower_components/bootstrap/less', 'resources/assets/less/bootstrap')
    .delete('variables.less')
    .copy('new-variables.less', 'resources/assets/less/bootstrap/variables.less') 
});


Как это можно обойти?

#39 Re: Laravel 5.x » не работает file system » 05.03.2015 20:11:20

спасибо
теперь не работает   Storage::name($file)

вот тут написано http://laravel.com/api/5.0/Illuminate/F … ystem.html
что есть метод name

а у меня он вызывает ошибку
ErrorException in FilesystemManager.php line 232:
call_user_func_array() expects parameter 1 to be a valid callback, class 'Illuminate\Filesystem\FilesystemAdapter' does not have a method 'name'


посмотрев сам файл FilesystemAdapter.php метод name я там действительно не нашел.

как они интересно документацию пишут?

#40 Laravel 5.x » не работает file system » 05.03.2015 00:27:58

schel4ok
Ответов: 2

сверху в контроллере подключил
namespace App\Http\Controllers;
use Storage;

далее пробую вывести список файлов в папке
$path = base_path().'/resources/assets/img/';
$files = Storage::files($path);

dd($files);  выводит пустой массив
dd($path); выводит "D:\OpenServer\domains\steklo.dev/resources/assets/img/"
и в этой папке есть 2 файла

также пробовал     $files = Storage::allFiles($path);

#41 Laravel 4 » route::post для любой страницы » 01.03.2015 10:35:37

schel4ok
Ответов: 2

На сайте есть кнопка "обратный звонок", которая вызывает форму в модальном окне
Соответственно с любой страницы сайта посетитель должен иметь возможность отправить сообщение без перезагрузки страницы.
Функция получения данных $_POST и $_FILES и отправка сообщения указаны в HomeController@post.

как это оформить в routes.php?
Route::post('что должно быть тут', 'HomeController@post');

#42 Re: Laravel 4 » проблема со ссылками previous и next » 28.02.2015 14:31:28

всё!!! разобрался

@if (isset($previous) and $previous->category_id === $page->category_id )
<a href="{{ URL::to( 'news/' . $previous->sef ) }}">Previous</a>
@endif

@if (isset($next) and $next->category_id === $page->category_id )
<a href="{{ URL::to( 'news/' . $next->sef ) }}">Next</a>
@endif

#43 Re: Laravel 4 » проблема со ссылками previous и next » 28.02.2015 13:58:06

немного доработал

class NewsController extends BaseController {


	public function getIndex()  
	{
		$pages = Page::where('category_id', '=', 85) 
					->orderBy('created_at', 'desc')
					->paginate(10); // все новости по 10 штук на страницу

		return View::make('news.index')->withPages($pages);
	}

	public function showpage($title)  
	{
		$pages = Page::where('category_id', '=', 85)->where('sef', '=', $title)->get();

			foreach ($pages as $page) // access user properties here
			{	
        		$previous = Page::where('id', '=', $page->id - 1)->get()->first();
				$next = 	Page::where('id', '=', $page->id + 1)->get()->first();
			}

		return View::make('news.item')
					->withPages($pages)
					->withPrevious($previous)
					->withNext($next);
	
	}

}
<a href="{{ URL::to( 'news/' . $previous->sef ) }}">Previous</a>

@if (isset ($next))
<a href="{{ URL::to( 'news/' . $next->sef ) }}">Next</a>
@endif

Новостей на сайте немного, поэтому они хранятся в одной таблице с остальными страницами в отдельной категории id=85
При этом новости расположены в конце БД, поэтому последняя страница рушилась с ошибкой, которую я вылечил при помощи @if (isset ($next)).
Но вот проблему с $previous я пока решить не могу.
При нажатии на ссылку previous на странице с первой новостью я попадаю на страницу из другой категории, которая выдает ошибку Undefined variable: previous
И вот как убрать ссылку previous со страницы с первой новостью мне пока непонятно.

#44 Re: Laravel 4 » проблема со ссылками previous и next » 28.02.2015 13:24:30

вот так получилось немного лучше
$previous = Page::where('id', '=', $page->id-1)->get()->first();
$next = Page::where('id', '>', $page->id+1)->get()->first();

при этом обе ссылки работают как надо, только не отображается страница с максимальным id в БД. Видимо потому, что для неё не существует $next.
Надо как-то сделать обработку этого события

#45 Laravel 4 » проблема со ссылками previous и next » 28.02.2015 12:55:24

schel4ok
Ответов: 4

я делаю вывод страниц по полю sef из БД, чтобы сразу были красивые урлы
но не получается нормально сделать на странице с одной новостью ссылки previous и next

в файле routes.php

Route::get('news', 'NewsController@getIndex'); / все новости
Route::get('news/{title}', 'NewsController@showpage'); / одна новость

попытался сделать так в контроллере NewsController

	public function showpage($title)  
	{
		$pages = Page::where('sef', '=', $title)->get();

			foreach ($pages as $page) // access user properties here
			{	
        		$previous = Page::where('id', '<', $page->id)->get()->first();
        		$next = Page::where('id', '>', $page->id)->get()->first();
			}

		return View::make('news.item')->withPages($pages)->with('previous', $previous)->with('next', $next);
	
	}

в шаблоне вывожу
<a href="{{ URL::to( 'news/' . $previous->sef ) }}">Previous</a>
<a href="{{ URL::to( 'news/' . $next->sef ) }}">Next</a>

почти работает, но есть 2 проблемы:
1) ссылка previous всегда ссылается на одну и ту же статью, у которой id = 1
2) на предпоследней странице ссылка next уже вызывает ошибку

Trying to get property of non-object (View: D:\OpenServer\domains\schel4ok.dev\app\views\news\item.blade.php)

#46 Laravel 4 » неизвестный текст в коде сайта » 22.02.2015 16:32:10

schel4ok
Ответов: 0

как-то раз я пытался установить настройки отображения даты и прочего при помощи функции setlocale и других способов прямо в файлах blade.php
у меня ничего не вышло - и я все эти функции удалил

но теперь у меня в коде сайта появилась какая-то цифра 3.3
появляется она до первого тега

3.3<!doctype html>
<head> 

нигде ничего такого я найти не смог

странно, что эта цифра 3.3 появляется еще и в консоли
например после выполнения команды

>php artisan db:seed
3.3Seeded: XLSSeeder

а должно быть
>php artisan db:seed
Seeded: XLSSeeder


что это такое?

#47 Re: Laravel 4 » перестали работать миграции » 16.02.2015 10:09:57

пардон. я подумал, что ты имеешь в виду таймстампы внутри файла, а не в названии.

дело и правда было в них.
сейчас проверил
сделал новый файл миграции в артизане - работает
удалил таймстамп из названия и в autoload_classmap.php - не работает

всё дело в этой функции resolve($file), которая убирает первые 4 части массива после разбора
только непонятно зачем сначала разбирать название из строки в массив, а потом собирать его обратно

#48 Re: Laravel 4 » перестали работать миграции » 16.02.2015 07:21:07

Сам придумал? Таймстампы вообще не обязательны

#50 Re: Laravel 4 » Laravel-Excel » 15.02.2015 22:16:31

по-моему вы занимаетесь какой-то фигней
всё вообще не так делается

<?php

class XLSSeeder extends Seeder {

	public function run()
	{
		$xls = 'app/database/seeds/seeder.xlsx';
		$book = Excel::load($xls, 'UTF-8')->all();

		foreach($book as $sheet)
		{   
			if ($sheet->getTitle() === 'categories') 
			{	Category::truncate();
				foreach($sheet as $row)
				{
					$category = Category::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'sef' => $row->sef,
						'body' => $row->body,
						'image' => $row->image,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}


    		if ($sheet->getTitle() === 'menu') 
			{	Menu::truncate();
				foreach($sheet as $row)
				{
					$menu = Menu::create([
						'id' => $row->id,
						'parent_id' => $row->parent_id,
						'level' => $row->level,
						'title' => $row->title,
						'route' => $row->route,
						'class' => $row->class,
						'metatitle' => $row->metatitle,
						'metakey' => $row->metakey,
						'metadesc' => $row->metadesc,
						]);
    			}
    		}
    	}
	}
}

Подвал раздела