Laravel по-русски

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

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

#26 Re: Laravel 5.x » Удаление папки или файла не работает » 27.09.2017 11:05:26

Storage работает не от корня файловой системы, все пути для него являются относительными от родительской папки, которая задаётся в настройках конкретного сториджа в config/filesystems.php

а чем отличается удаление по полному пути и не по полному. Вы мне уже 4 человек об этом говорите... и я вчера благополучно перписал все на локальное хранилище и доставание через симлинку, результат точно такой же: Storage не работает. Работает только File::

#27 Laravel 5.x » Удаление папки или файла не работает » 25.09.2017 00:03:29

Normand
Ответов: 3
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use App\Good;
use App\Image;

class testpost extends Controller
{
    //
    public function execute(Request $request){

    		$directory = "/Users/local/Desktop/111/2.png";
    		//unlink($directory);
    		dd(Storage::delete($directory));
    		//$status_delete_file=Storage::deleteDirectory($directory);

    }
}

Пытаюсь просто удалить вот файл "/Users/local/Desktop/111/2.png"
в итоге Storage ни сам файлик ни папку 111 целиком не удаляет, всегда возвращает false. А вот если использовать родной метод php unlink то без проблем сносит.
Те с правами точно нет заморочек, все делаю на локале да и unlink бы не работал. Что может быть?
Пробовал и в локальное хранилище складывать ну по пути storage/app/public тоже самое. Не могу понять.
-----------------
версия 5.4
PHP 7.1.1
filesystems.php
https://paste.laravel.io/f6ed6219-6200- … cd401387f5

.env
https://paste.laravel.io/f8ce9006-9c09- … 8f35570107

app.pjp
https://paste.laravel.io/1f17fce9-4480- … 22483ddc44

#28 Laravel 5.x » Обязательная перменная в роуте приводит к ошибке » 17.09.2017 19:43:27

Normand
Ответов: 0

роуты

Route::group(['prefix' => 'admin'], function(){
    
    //главная страница админки
	Route::get('/',function(){
		if (view()->exists('admin.index')){
			$admin_data = [
							'title' => 'товары'
			];
			return view('admin.layouts.app',$admin_data);
		}
	});


	//листинг товаров из базы
	Route::get('goods',['uses'=>'AdminGoodControllerList@execute','as'=>'goodslist']);
	
	//показываем форму для добавления
	//Route::get('/addgood',['uses'=>'AdminGoodControllerAddGood@execute','as'=>'addgood']);

	Route::match(['get','post'],'/addgood',['uses'=>'AdminGoodControllerAddGood@execute','as'=>'addgood']);

	//листинг товаров из базы
	Route::match(['get','post','delete'],'/editgood/{good?}',['uses'=>'AdminGoodControllerEditGood@execute','as'=>'editgood']);

});

контролер AdminGoodControllerEditGood

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use Validator;
use App\Good;
use App\Image;

class AdminGoodControllerEditGood extends Controller
{
    //показываем форму добавления в базу продукта
	public function execute(Good $good, Request $request){


		if ($request->isMethod('post')){
			
			$input = $request->except('_token');		

			$massages = [
				
					'required'=>'Ты обязан заполнить это :attribute',
					'unique'=>'Эта хрень :attribute должна быть уникальной',
					'numeric'=>'Вэтом поле :attribute только цифры можно юзать'
			];

	    	$rullers = [
					'title' => 'required|max:255',
					'description' => 'required',
					'courier'=> 'required|unique:goods,courier,'.$input['id'],
					'sku'=> 'required|unique:goods,sku,'.$input['id'],
					'price'=> 'required|numeric',
					'quantity'=> 'required|numeric'
			];
	    	
			$validator = Validator::make($input,$rullers,$massages);
			
			if($validator->fails()) {
				return redirect()
						->route('editgood',['good'=>$input['id']])
						->withErrors($validator);
			}


	        $arr = [
	    			'title' => 'Редактор',
	    			'data' => $good
	    	];

		}


        $arr = [
    			'title' => 'Редактор',
    			'data' => $good
    	];

        return view('admin.formEdit',$arr);
    	
    }
}

/editgood/{good?} - если так то по запросу:
/admin/editgood/9 - будет идти все ок
но если я в роутах напишу:
/editgood/{good} - те good как обязательная переменная, делаем такой же запрос
/admin/editgood/9 - пишет обязательная переменная good пропущена
Так же не должно быть. Что делать?

#29 Laravel 5.x » Проблема с валидатором - не работает исключение уникальности » 17.09.2017 19:31:08

Normand
Ответов: 0

Привет всем!

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use Validator;
use App\Good;
use App\Image;

class AdminGoodControllerEditGood extends Controller
{
    //показываем форму добавления в базу продукта
	public function execute(Good $good, Request $request){


		if ($request->isMethod('post')){
			
			$input = $request->except('_token');		

			$massages = [
				
					'required'=>'Ты обязан заполнить это :attribute',
					'unique'=>'Эта хрень :attribute должна быть уникальной',
					'numeric'=>'Вэтом поле :attribute только цифры можно юзать'
			];

	    	$rullers = [
					'title' => 'required|max:255',
					'description' => 'required',
					'courier'=> 'required|unique:goods,courier,'.$input['id'],
					'sku'=> 'required|unique:goods,sku,'.$input['id'],
					'price'=> 'required|numeric',
					'quantity'=> 'required|numeric'
			];
	    	
			$validator = Validator::make($input,$rullers,$massages);
			
			if($validator->fails()) {
				return redirect()
						->route('editgood',['good'=>$input['id']])
						->withErrors($validator);
			}


	        $arr = [
	    			'title' => 'Редактор',
	    			'data' => $good
	    	];

		}

        $arr = [
    			'title' => 'Редактор',
    			'data' => $good
    	];

        return view('admin.formEdit',$arr);
    	
    }
}

структура таблицы
5F1bL
'courier'=> 'required|unique:goods,courier,'.$input['id'],
'sku'=> 'required|unique:goods,sku,'.$input['id'],
данные правила не проходят проверку, когда я пытаюсь отправить форму валидатор говорит что поля должны быть уникальным, ок ... но я же добавил исключение!
courier,'.$input['id']
подскажите в чем может быть проблема?
Также пробывал правила задавать так
'courier' => ['required',Rule::unique('goods')->ignore($input['id'])],
один фиг тоже самое.

вывод DD если отправляем пост, то видим что ID он ловит все ок.

array:8 [▼
  "id" => "9"
  "title" => "Товар номер 3"
  "description" => "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ut finibus enim, in fermentum orci. Phasellus lacinia enim sed lacus vulputate, eu males ▶"
  "courier" => "55842333"
  "sku" => null
  "price" => "50"
  "quantity" => "698"
  "active" => "on"
]

PS
php artisan --version
Laravel Framework 5.4.32

#30 Re: Laravel 5.x » Структура баз данных » 10.09.2017 14:23:10

Да все верно, даже мыслей не было бинарки пихать в базу, онли файлы. Спасибо большое за предупреждение.

#31 Re: Laravel 5.x » Структура баз данных » 07.09.2017 23:51:59

ну я пошел по пути "полиморфической связи". Вроде то что нужно.

#32 Laravel 5.x » Структура баз данных » 07.09.2017 16:48:34

Normand
Ответов: 4

Подскажите как правильно сделать структуру базы под изображения в магазине. Есть три вида изображений: это главныЕ изображения, те они могут выводиться под каждым товаром, также есть изображения дополнительные которые используются в описании, и их тоже может быть несколько, также есть изображения для комментариев, где каждый комментарий может содержать несколько изображений. Вобщем я думаю создать просто три таблицы с внешними ключами, и разложить изображения соотвествии с вышеперечисленными принципами. Есть мож другой подход?

#33 Общий раздел » Не могу поставить laravelcollective/html » 06.09.2017 15:34:14

Normand
Ответов: 1
composer require "laravelcollective/html":"^5.4.0"
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing laravelcollective/html (v5.4.9): Loading from cache
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postUpdate
> php artisan optimize
Generating optimized class loader
The compiled services file has been removed.
    Skipped installation of bin bin/psysh for package psy/psysh: file not found in package
    Skipped installation of bin phpunit for package phpunit/phpunit: file not found in package

Не могу понять что этому надо вообще, вроде версия в порядке

php artisan --version
Laravel Framework 5.4.32

Чистил кешь композера, что тока не делал. Помогите!
Если гуглить выводит китайскую ересь https://goo.gl/JvBLCV

#34 Re: Laravel 5.x » Как обратиться Property? » 04.09.2017 13:25:15

всем спасибо! видимо надо работать с утра, а не по ночам smile

#35 Laravel 5.x » Как обратиться Property? » 04.09.2017 02:13:12

Normand
Ответов: 3

https://laravel.ru/forum/viewtopic.php?id=2829 тут я вывел вобщем под каждый товар своИ картинки. Вот что получилось:
DD
Скажите пожалуйста как обратиться теперь мне к имени файла картинки наденной.
ну логично было бы сделать так:

$goodlist = Good::with(['images' => function($query){
                $query->where('general', '=', 1);
            }])->paginate(5);


foreach ($goodlist as $key => $value) {
$value->images->name;
}

Но пишет что такого $value->images->name не найдено
Property [name] does not exist on this collection instance.

Если вывести

dd($value->images);

вот же он: name, от чего не выводит?
devshop.localadmingoodspage1_2017-09-04_01-14-51.png

#36 Re: Laravel 5.x » Вывод картинки к каждому товару в админке » 04.09.2017 01:38:40

решил проблему, если кому интересно

$goodlist = Good::with('images')->paginate(5);

#37 Laravel 5.x » Вывод картинки к каждому товару в админке » 04.09.2017 00:03:24

Normand
Ответов: 1

Есть таблица images в ней есть внешний ключ на таблицу goods
localhost__localhost__devshop__images__phpMyAdmin_4.6.5.2_2017-09-03_22-58-37.png
собственно сама таблица goods
localhost__localhost__devshop__goods__phpMyAdmin_4.6.5.2_2017-09-03_22-59-56.png
В контролере у меня есть такой запрос:

$goodlist = DB::table('goods')->paginate(5);
$pages = $goodlist->render();

В модели Good есть

public function images(){
    	return $this->hasMany('App\Image');
    }

Но мне надо каждый товар чтоб дополнился еще и картинкой из images в $goodlist.
Как это лучше сделать подскажите пожалуйста.
Если скажем выводим 100 записей на страницу, то надо делать получается 100 запросов только для одной страницы в базу данных?
С другой стороны если выгрести все картинки вообще, то это тоже не верно их может быть очень много же. Получается надо состряпать какой то один запрос большой где перечислить все ID первой страницы или как? Помогите пожалуйста. Тут еще и paginate...

#39 Laravel » Не могу исправить ошибку SQLSTATE[42000] » 09.08.2017 21:50:05

Normand
Ответов: 2

Сама ошибка возникает при миграции на дефолтных миграционных конструкциях.

php artisan migrate
Migration table created successfully.

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

есть лечение
https://laravel-news.com/laravel-5-4-key-too-long-error
содержание моего файла данного
http://www.heypasteit.com/clip/0IIQIO
все равно пишет тоже самое!

Помогите уже часа 4 ковыряю не могу нарыть!

#40 Re: Общий раздел » Установка версии laravel 5.2 через композер » 30.03.2017 19:31:55

нашел в документации, кому интересно:
>composer create-project --prefer-dist laravel/laravel blog "5.2.*"

#41 Общий раздел » Установка версии laravel 5.2 через композер » 30.03.2017 19:28:10

Normand
Ответов: 1

Здравствуйте!
Подскажите пожалуйста, как именно мне поставить более старую версию laravel 5,2, при помощи композера?
Причина, видео обучающее нацеленно именно на эту версию.
Спасибо!

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