Laravel по-русски

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

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

#1 Re: Laravel 6/7/8 » Encore laravel-admin » 20.02.2021 16:33:52

С этой проблемой разобрался , всем Спасибо.

#2 Laravel 6/7/8 » Encore laravel-admin » 20.02.2021 02:25:21

DzonyBB
Ответов: 1

Привет всем , не сочтите за рекламу , но после некоторых поисков нашел на github админку. Но застрял в одном месте . А именно каскадные списки. Перепробовал множество вариантов . Может моего ума не хватает , поэтому прошу помощи. Может кто уже использовал эту прогу . Мне нужно например в выпадающем списке при выборе department чтобы выбирались соответсвующие категории . Имеются 2 таблицы departments и categories в таблице categories присутствует поле department_id . Пример находится здесь. :
https://laravel-admin.org/docs/en/model … g%20select
Заранее благодарен откликнувшемся.
P.S только если можно обьяснить для тех кто в танке .
Вот мои потуги :
Маршрут

Route::resource('/admin/departments-categories',DepartmentCategoryController::class);

Контроллер:(по логике если аргумент Request я выбрал функцию метод Store)

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Category;

class DepartmentCategoryController extends Controller
{

	public function store(Request $request)
	{
		$department_id = $request->get('q');

		return Category::departments_categories()->where('parent_id', $department_id)->get(['id', DB::raw('name as text')]);
	}
}

Нашел функцию Load:

 	public function load($field, $sourceUrl, $idField = 'id', $textField = 'text', bool $allowClear = true){
		if(Str::contains($field, '.')){
			$field = $this->formatName($field);
			$class = str_replace(['[', ']'], '_', $field);
		} else{
			$class = $field;
		}

		$placeholder = json_encode([
				'id'   => '',
				'text' => trans('admin.choose'),
			]);
			
		$strAllowClear = var_export($allowClear, true);
	

		$script = <<<EOT
		$(document).off('change', "{$this->getElementClassSelector()}");
		$(document).on('change', "{$this->getElementClassSelector()}", function () {
		var target = $(this).closest('.fields-group').find(".$class");
		$.get("$sourceUrl",{q : this.value}, function (data) {
		target.find("option").remove();
		$(target).select2({
		placeholder: $placeholder,
		allowClear: $strAllowClear,
		data: $.map(data, function (d) {
		d.id = d.$idField;
		d.text = d.$textField;
		return d;
		})
		});
		if (target.data('value')) {
		$(target).val(target.data('value'));
		}
		$(target).trigger('change');
		});
		});
EOT;
           
		Admin::script($script);

		return $this;
	}

Ну и моя форма :

$form->select('department_id','Select Department')
		->options(Department::orderBy('name')->pluck('name','id'))->default( function()
		{
			$department = Product::latest()->first();
			return($department->department_id);
		})->load('departments_categories','/admin/departments-categories');
$form->select('departments_categories');

Теоретически , вроде как должно работать. Но увы . Как говорил Жванецкий , у них работает , а у меня два часа на пару , и не работает . roll

#3 Re: Laravel 6/7/8 » Пагинация » 19.02.2021 14:12:12

Если я не ошибаюсь , то ранее была пагинация Bootstrap по умолчанию , а теперь Tailwind вроде как . Попробуйте в AppServiceProvider прописать

	
	public function boot(){
		
	  Paginator::useBootstrap();

	}

https://laravel.com/docs/8.x/releases#t … tion-views

#4 Re: Laravel 6/7/8 » Laravel 8.26.1 vue » 06.02.2021 17:02:21

ну хотя бы посмотрите что за ошибкиу меня под вин на OpenServer все ставится без проблем

  Там в тегах кода все отображается , пришлось вручную устанавливать, chokidar, pooper,urix , bootstrap 4.6 .
Единственное , что не поборол , так это <<SKIPPING OPTIONAL DEPENDENCY>> . Нашел в инете совет прописать в файле package.json <<"optionalDependencies": []>> , но предупреждения все равно выскакивают.
  Я уже написал , у меня версия OpenServer 5.3.8 PHP 8 , node 14.15.4 . Попробуйте создать новый проэкт laravel , ставится версия 8.26.1  , и установить ui vue , а затем запустить npm install i npm run dev . Что то я не поверю , что не будет никаких error и предупреждений . Может я все таки что то не так делаю ???

node и npm надо ставить отдельно

С этим тоже вроде как разобрался , нашел в мануале , создать файл path.txt и прописать там путь к node. Сейчас все нормально.
Запустил npm run watch файлы компилировались и в папке public появились папки js и css .
Спасибо что откликнулись.

#5 Re: Laravel 6/7/8 » Laravel 8.26.1 vue » 05.02.2021 18:55:54

Offtopic:

  Вообщем , как я и предполагал , дело не в папках. Я установил PHP 7.4 и Laravel 7.3.1 , если не ошибаюсь. Не скажу , что все прошло гладко , команда <<composer require laravel/ui>> не прокатила , пишет , что версия 3,2 не может быть установлена , и нужно менять установки в composer.json . Туда я не полез , а запустил << npm install и npm run dev >> . Обе команды прокатили с ошибками , которых я тоже не читал , но в папку public папки css и js добавились.  Вообщем как всегда проблема с совместимостью.
  А теперь возникает вопрос , я ставлю PHP 8 и Laravel 8 с ноля , и как мне теперь устанавливать всякие там laravel/ui , и тому подобное .  Особенно , если я начинающий , и только изучаю. Как всегда танцы с бубном ?????
   А в мануале для 8 версии Laravel все красиво написано , но не работает . И как теперь быть ???
P.S И что интересно , создаю проэкт таким макаром , <<composer create-project laravel/laravel myproject  v8.0>>
Устанавливается все равно 8.26.1 roll
Вот , как то так.

сервера в интернетах работают почти исключительно под linux. зачем учить два разных способа делать одно и то же?

Я поставил OpenServer , там такая же петрушка , а npm -v и node -v вообще не распознаются и npm install не прокатывает , пишет , не найден модуль.
  Не ставить же мне Linux roll

#6 Re: Laravel 6/7/8 » Laravel 8.26.1 vue » 05.02.2021 09:37:29

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

  Как всегда спасибо , за то что откликнулись. Скажу , что ранее такой проблемы не наблюдалесь. Сейчас я попробую снести XAMPP с PHP 8 , ио установить с 7.4 , а так же уставивить Laravel более ранней версии . На скрине видно , что он еще просит некоторых зависимостей типа pooper 2 и так далее . Я пока вручную не устанавливал , но странно , что папки не создаются. Буду эксперементировать. Я думал , может кто сталкивался с подобным. Правду говорят , не нужно спешить ставить обновления. smile

#7 Laravel 6/7/8 » Laravel 8.26.1 vue » 04.02.2021 13:28:07

DzonyBB
Ответов: 5

Добрый день , подскажите кто и как борется с этой проблемой. Windows XAMPP xampp-windows-x64-8.0.1-1-VS16 , Node JS - 14.15.4
1.composer create-project --prefer-dist laravel/laravel laravel - последняя версия 8.26.1
2.composer require laravel/ui
3.php artisan ui vue --auth
4.npm install
5.npm run dev
6.php artisan vendor:publish
И вот тут начинаются чудеса . В папке public папки css и js не создаются , апосле команд npm run dev и (или)npm run watch выдается куча ошибок , например .

 PS C:\openserver\domains\laravel> npm run watch

> @ watch C:\openserver\domains\laravel
> mix watch

[webpack-cli] TypeError: The 'compilation' argument must be an instance of Compilation
    at Function.getCompilationHooks (C:\openserver\domains\laravel\node_modules\webpack\lib\NormalModule.js:179:10)
    at C:\openserver\domains\laravel\node_modules\vue-loader\lib\plugin-webpack5.js:36:70
    at Hook.eval [as call] (eval at create (C:\OpenServer\domains\laravel\node_modules\tapable\lib\HookCodeFactory.js:19:10), <anonymous>:202:1)
    at Hook.CALL_DELEGATE [as _call] (C:\OpenServer\domains\laravel\node_modules\tapable\lib\Hook.js:14:14)
    at Compiler.newCompilation (C:\OpenServer\domains\laravel\node_modules\webpack\lib\Compiler.js:993:26)
    at C:\OpenServer\domains\laravel\node_modules\webpack\lib\Compiler.js:1035:29
    at Hook.eval [as callAsync] (eval at create (C:\OpenServer\domains\laravel\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:22:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\OpenServer\domains\laravel\node_modules\tapable\lib\Hook.js:18:14)
    at Compiler.compile (C:\OpenServer\domains\laravel\node_modules\webpack\lib\Compiler.js:1030:28)
    at C:\OpenServer\domains\laravel\node_modules\webpack\lib\Watching.js:112:19
    at Hook.eval [as callAsync] (eval at create (C:\OpenServer\domains\laravel\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:22:1)
    at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (C:\OpenServer\domains\laravel\node_modules\tapable\lib\Hook.js:18:14)
    at run (C:\OpenServer\domains\laravel\node_modules\webpack\lib\Watching.js:66:33)
    at Watching._go (C:\OpenServer\domains\laravel\node_modules\webpack\lib\Watching.js:123:4)
    at C:\OpenServer\domains\laravel\node_modules\webpack\lib\Watching.js:57:9
    at Compiler.readRecords (C:\OpenServer\domains\laravel\node_modules\webpack\lib\Compiler.js:871:11)
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! @ watch: `mix watch`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the @ watch script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Volodia\AppData\Roaming\npm-cache\_logs\2021-02-04T10_12_10_999Z-debug.log
PS C:\openserver\domains\laravel> npm -v
6.14.10
PS C:\openserver\domains\laravel> node -v
v14.15.4
PS C:\openserver\domains\laravel>

  В интернете пока информации не нашел.
А вот что после npm install

  PS C:\openserver\domains\laravel> npm install
npm WARN deprecated popper.js@1.16.1: You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1
npm WARN deprecated urix@0.1.0: Please see [url]https://github.com/lydell/urix#deprecated[/url]
npm WARN deprecated chokidar@2.1.8: Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.
npm WARN deprecated @types/browserslist@4.15.0: This is a stub types definition. browserslist provides its own type definitions, so you do not need this installed.
npm WARN deprecated fsevents@1.2.13: fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.
npm WARN deprecated resolve-url@0.2.1: [url]https://github.com/lydell/resolve-url#deprecated[/url]
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules\@types\browser-sync\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.1 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

added 1184 packages from 531 contributors and audited 1188 packages in 54.018s

89 packages are looking for funding
  run `npm fund` for details

found 1 high severity vulnerability
  run `npm audit fix` to fix them, or `npm audit` for details

#8 Re: Laravel 6/7/8 » Загрузка картинок с другого сайта » 22.12.2020 19:54:39

Сделал так. Загружает . Всем спасибо

	if(isset($request->url_upload)){
			
	$url = $request->file_name;
			
	$file_extension = pathinfo($url)['extension'];
	$file_name=$date . '.' . $file_extension;
			
	$file = file_get_contents($url);
		    
	Storage::put($file_name, $file);
					
}

#9 Re: Laravel 5.x » Странное поведение маршрутов(route) в Laravel » 14.12.2020 13:36:12

Ресурс-контроллеры обрабатывают запросы согласно стандартам http.Существует несколько способов обращения к одному и тому же адресу: get, post, put и deleteМетод route просто подставляет урл в тэг <a> при этом он ничего не говорит о способе, которым делается запрос, поэтому код <a href=> для show и delete будет идентичный - через get ипоэтому обработается методом show

  Спасибо за ответ , уже разобрался , сделал через форму ,

<form method="POST" action="{{route('blogs.destroy',['blog'=>45677])}}">
@csrf
<button  type="submit" class="btn btn-success" name="delete" value="delete">Delete</button>
@method('DELETE')
</form>

#10 Re: Laravel 6/7/8 » Привязка контроллера ресурса » 14.12.2020 09:15:04

посмотрите внимательнее на route:listтам помимо маршрута указан метод.для show - get, для destroy - delete, а сам url одинаковый, т.е. разница только в методе запроса. т.к. a href - это get метод, то и вызывается show в контроллере

  Спасибо за ответ , уже разобрался . Сделал через форму

<div> 
<form method="POST" action="{{route('blogs.destroy',['blog'=>45677])}}">
@csrf
<button  type="submit" class="btn btn-success" name="delete" value="delete">Delete</button>
@method('DELETE')
</form>	
</div>

Еще раз спасибо , что откликнулись. smile

#11 Laravel 6/7/8 » Привязка контроллера ресурса » 13.12.2020 23:14:52

DzonyBB
Ответов: 2

Всем привет . Решил таки продолжить эту тему . Столкнулся со странным поведением маршрутов . Попробую по порядку , читая документацию и книШки о прелестях Laravel решил воспользоваться этими прелестями .

создал контроллер в artisan

php artisan make:controleer TestController --resource

Контроллер создается , проблем нет . Теперь создаем маршруты .

Route::resource('tests', TestController::class);

запускаем команду

php artisan route:list

Список маршрутов отображается согласно документации .
А вот теперь начинается самое интересное.
Создаю на кнопку или ссылку с указанием имени маршрута например

<a href="{{route('tests.show',['test'=>10])}}">Test Show</a>

в контроллере функция show() срабатывает
А если создаю

<a href="{{route('tests.destroy',['test'=>10])}}">Test Destroy</a>

То все равно срабатывает ссылка Test Show, т.е в контроллере срабатывает функция show() .
Вопрос- Что я делаю не так ???
Спасибо .

#12 Re: Laravel 5.x » Странное поведение маршрутов(route) в Laravel » 13.12.2020 23:12:53

Всем привет . Решил таки продолжить эту тему . Столкнулся со странным поведением маршрутов . Попробую по порядку , читая документацию и книШки о прелестях Laravel решил воспользоваться этими прелестями .

создал контроллер в artisan

php artisan make:controleer TestController --resource

Контроллер создается , проблем нет . Теперь создаем маршруты .

Route::resource('tests', TestController::class);

запускаем команду

php artisan route:list

Список маршрутов отображается согласно документации .
А вот теперь начинается самое интересное.
Создаю на кнопку или ссылку с указанием имени маршрута например

<a href="{{route('tests.show',['test'=>10])}}">Test Show</a>

в контроллере функция show() срабатывает
А если создаю

<a href="{{route('tests.destroy',['test'=>10])}}">Test Destroy</a>

То все равно срабатывает ссылка Test Show, т.е в контроллере срабатывает функция show() .
Вопрос- Что я делаю не так ???
Спасибо .

#13 Re: Laravel 6/7/8 » Загрузка картинок с другого сайта » 13.12.2020 22:55:07

Можете влипить взаимный.

  Я такой муйней не занимаюсь. smile

#14 Re: Laravel 6/7/8 » Загрузка картинок с другого сайта » 10.12.2020 15:25:33

Так вы деталей н каких не привели. Конечно ни кто не будет тут гадать что вы хотите сделать.
Я вообще из того что привели, понял что вы в какое то апи хотите загрузить картинку по урлу.

А какие детали я могу привести ? Нужно было сделать домашнее задание загрузка фотографий на сервер . Один способ загрузки , т.е стандартный с локального компьютера я сделал , а вот второй способ я процитировал

пользователь может загрузить фотографию через API, указав URL-адрес фотографии

И вот я так же ломаю голову над этой фразой , поэтому и обратился за помощью .
  Кстати , я попробовал зайти на сайт с фотографиями открыл фото , скопировал вручную ссылку (URL) , вставил в диалоговое окно формы , и он загрузил фото по ссылке на сервер . Но для меня остается непонятным смысл этой фразы. Если я правильно понял , то необходимо использовать какую-нибудь стороннюю программу , т.е интегрировать ее в проэкт Laravel . Но поиски в goolge пока не дали результатов.  Вот , как то так. Еще раз спасибо , что откликнулись.  hmm
P.S И тут я вижу на форуме ставят плюсики , а сейчас смотрю и минусики , но странно , почему такие спецы не комментируют свои действия , а предпочитают оставаться в тени . Наводит на некоторые мысли , хотя лично мне , мнение таких критиков глубоко по ........ lol

#15 Re: Laravel 6/7/8 » Загрузка картинок с другого сайта » 09.12.2020 19:54:33

Подробнее должно быть написано в доке к апи

   Спасибо конечно , но я понял , что я ничего не понял. В книге Стаффера  Laravel описаны только маршруты и фильтрация , что практически не дает никакой информации. Ну еще авторизация . А здесь как всегда все молчат , делая вид , что вопрос не достоин их внимания. Ладно , как говорил Никулин , будем искать . sad

#16 Re: Laravel 6/7/8 » Загрузка картинок с другого сайта » 09.12.2020 10:31:54

Добрый день еще раз , книШки не помогли , решил продолжить тему. Кто-нибудь может мне обьяснить смысл этой фразы ?

пользователь может загрузить фотографию через API, указав URL-адрес фотографии

  API я пока не изучал , поэтому не особо понимаю . Чем отличается стандартная загрузка от API .  Заранее спасибо.

#18 Laravel 6/7/8 » Загрузка картинок с другого сайта » 07.12.2020 22:13:20

DzonyBB
Ответов: 10

Привет всем , собственно сабж . Киньте ссылку где можно об этом почитать. Мне нужно автоматизировать загрузку файлов на свой сервер с других сайтов . По подобию загрузки с локального компьютера. Надеюсь вопрос задал правильно. Заранее спасибо.

#19 Re: Laravel 6/7/8 » Как проверить значение переменной в представлении ? » 24.11.2020 23:19:47

Может так попробуйте ?

@forelse($products as $product)
Выводим данные
@empty
Если пусто
@endforelse

#20 Re: Laravel 6/7/8 » Приходит пустой Request » 19.10.2020 23:19:29

Он, видимо, имел в виду, что русскоязычное сообщество laravel упорото настолько что считают полученные знания о фрэймворке коммерческой тайной и ниже собственного достоинства объяснять азы по работе с ним, забывая, что когда-то сами с этого начинали!

Ну это проблема не только этого форума , но и многих других  , Вы наверняка слышали анекдот про американский , еврейский и русский форум , надеюсь мне не нужно этого рассказывать.
  Что касается вопроса ТС по данной теме , я не великий гуру и не акула PHP и Laravel , но я ни разу не сталкивался с такой проблемой как у ТС . Если у меня был пустой Request или я видел в нем не то что хотел , то причину я находил . И как правило причина была не в Laravel , а моем незнании инструмента.   К тому же с github можно скачать и прикрутить к проэкту на время разработки debugger для Laravel , очень удобный и хороший помощник. Там видишь практически все , и какие маршруты отрабатывают и , запросы , и session и Request , а так же методы отправки GET,POST и так далее. .
  А телепатить проблему ТС не видя его проэкта думаю задача не из легких. Без гадалки не обойтись. smile
P.S Что касается форума , то конечно не моментально , а со временем я получал ответы на мои вопросы , или сам находил решения своей проблемы.  Как то так наверное.

#21 Re: Laravel 6/7/8 » Приходит пустой Request » 19.10.2020 13:05:39

Частая ситуация, помогли, а решения в сеть жмут выкладывать Респект таким помогальщикам

  Извиняюсь за тупость , но лично я из Вашего сообщения ничего не понял. Можно поподробнее?

#22 Re: Laravel 6/7/8 » Переадресация на предыдущую страницу после авторизации » 18.10.2020 15:03:08

Спасибо )) разбираюсь

Примерно так

        use Illuminate\Http\Request;

	public function моя функция(Request $request)
	{
              session()->put('user_url',$request->segment(1));	

	}//End function

#23 Re: Laravel 6/7/8 » Переадресация на предыдущую страницу после авторизации » 18.10.2020 14:50:49

@DzonnyBB, сорри за возможно глупы вопрос. а как добавить в сессию user_url?

Глупых вопросов не бывает. smile
Как то так,

session()->put('user_url',$request->segment(1));

#24 Re: Laravel 6/7/8 » Как обновить страницу » 16.10.2020 11:13:43

Но проблема в том, что после внесений изменений данные в форме не меняются.

method="POST" action="{{route('ваш маршрут')}}"

В форме указываете метод отправки данных на сервер GET или POST а так же маршрут , и в контроллере обрабатываете данные и возвращаете форму с обновленными данными . Второй способ использование AJAX .
Как то так наверное .

#25 Re: Laravel 6/7/8 » Переадресация на предыдущую страницу после авторизации » 16.10.2020 10:24:14

Спасибо, разбираюсь..

Я не знаю насколько это криво , так как делал это давно , но это все работает . После авторизации пользователь перенаправляется на страницу из которой делал вход. Этот код в LoginController . Ну и естественно в нужном месте добавлял в сессию user_url . Наскольлко это криво я не знаю , уже предупреждал. smile

	protected function redirectTo()
	{
		if(session()->get('user_url')){
			return url(session()->get('user_url'));
			session()->pull('user_url');
		}

		else
		{
			return url('home');
		}

	}

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