Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Привет всем ! Даже не знаю с чего начать . Нашел в инете библиотеку Laravel Inertia JS , посмотрел пару видеоуроков , вроде ничего . Но стoлкнулся с такой проблемой , нигде в инете не нашел инфу об абсолютном пути к файлу в Inertia , например имеется использование имя роута есть,
<Link :href="route('index')" >
Route Link
</Link>
а вот тоже самое , но использование asset,как в шаблонах Laravel не предусмотрено:
<Link :href="asset('/index')" >
Route Link
</Link>
Заинстаилоровал @codinglabs/laravel asset . Но эта беда не работает например в такой связке .
<Link :href="route('index')">
<img :src="asset('/icons/logo.png')">
</Link>
Может кто использовал Laravel Inertia ? И поделится своим опытом??? Заранее благодарен .
php artisan config:cache
Помогло
Странно , но мне тоже.
Добавил в updated вызов функции getProducts(), все работает.
updated(){
this.getProducts();
}
Не знаю насколько это криво , критика воспринимается. Так как всегда прислушиваюсь к советам бывалых.
Еще раз , спасибо.
P.S все таки криво , теперь когда открываю DevTools и Vue в консоли куча ошибок. Нужно разбираться.
Еще раз прошу помощи.
Привет всем . Я конечно понимаю , что это вопрос не по Laravel , a Vue JS , но все равно решил обратиться за помощью . Столкнулся со странным явлением . Я понимаю , что я делаю что то не так не так , но пока не могу понять что.
Постараюсь коротко , на форме имеется sidebar-Департмент, в котором прописаны динамические ссылки
<router-link class="d-flex justify-content-between"
v-b-toggle="`category${category.id}`"
:to="{name:'ProductIndex',
params:{department:department.uri,dep_id:department.id,
category:category.uri,cat_id:category.id,
subcategory:subcategory.uri,subcat_id:subcategory.id
}}">
{{ subcategory.name }}
<b-icon class="mx-1" icon="chevron-right"></b-icon>
</router-link>
export default {
data() {
return {
products: [],
}
},
created() {
this.getProducts();
},
computed: {
myFunction: function() {
this.getProducts();
}
},
methods: {
getProducts() {
this.axios.post(`${this.$route.path}`)
.then(response => {
this.products = response.data;
});
}
}
}//end export
И вот , что интерессно . Если я перезагружаю страницу и кликаю на какую нибудь ссылку в sidebar , срабатывает при первом клике , а затем данные не обновляются. Но когда я нажимаю F12 и открываю вкладку Vue , где просмативаю все компоненты , то все работает нормально , при клике на sidebar все данные обновляются . Но как только закрываю DevTools , все перестает работать. После перезагрузки страницы F5 срабатывает только первый раз. Но как открываю DevTools-Vue, все работает.
Подскажите в чем проблема . В документацию Vue заходил , но пока моего ума не хватает разобраться. Заранее спасибо.
как в админке изменить пароль пользователя
А как насчет защиты пользовательских данных?
Я прошу прощения - не разобрался, как удалить эту тему здесь. Вопрос решился это была по видимому запара ларавел.
Да нет, это скорее Ваша запара. Во дном месте page , а в другом pages .
Всю голову поламал как это можно сделать. Help me please
Один из вариантов нормализовать базу данных . Создать таблицу событий и в нее добавить поле user_id и связь один ко многим . Как то так наверное.
Подскажите, что я делаю не так и как можно реализовать редирект?
Если честно , я не понял какой велосипед Вы пытаетесь построить , но на этом же форуме в разделе Документация , почитайте раздел Аунтефикация. Ссылка ,если чО. https://laravel.ru/docs/v5/authentication
Запустите команду
php artisan route:list
И Вы увидете все маршруты, и где они находятся.
С этой проблемой разобрался , всем Спасибо.
Привет всем , не сочтите за рекламу , но после некоторых поисков нашел на 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');
Теоретически , вроде как должно работать. Но увы . Как говорил Жванецкий , у них работает , а у меня два часа на пару , и не работает .
Если я не ошибаюсь , то ранее была пагинация Bootstrap по умолчанию , а теперь Tailwind вроде как . Попробуйте в AppServiceProvider прописать
public function boot(){
Paginator::useBootstrap();
}
ну хотя бы посмотрите что за ошибкиу меня под вин на 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 .
Спасибо что откликнулись.
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
Вот , как то так.
сервера в интернетах работают почти исключительно под linux. зачем учить два разных способа делать одно и то же?
Я поставил OpenServer , там такая же петрушка , а npm -v и node -v вообще не распознаются и npm install не прокатывает , пишет , не найден модуль.
Не ставить же мне Linux
может быть твоя папка public имеет неправильного владельца и права доступа не позволяют создать в ней что-то.подобные проблемы часто случаются когда злоупотребляют командами из-под административного аккаунта.
Как всегда спасибо , за то что откликнулись. Скажу , что ранее такой проблемы не наблюдалесь. Сейчас я попробую снести XAMPP с PHP 8 , ио установить с 7.4 , а так же уставивить Laravel более ранней версии . На скрине видно , что он еще просит некоторых зависимостей типа pooper 2 и так далее . Я пока вручную не устанавливал , но странно , что папки не создаются. Буду эксперементировать. Я думал , может кто сталкивался с подобным. Правду говорят , не нужно спешить ставить обновления.
Добрый день , подскажите кто и как борется с этой проблемой. 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
Сделал так. Загружает . Всем спасибо
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);
}
Ресурс-контроллеры обрабатывают запросы согласно стандартам 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>
посмотрите внимательнее на 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>
Еще раз спасибо , что откликнулись.
Всем привет . Решил таки продолжить эту тему . Столкнулся со странным поведением маршрутов . Попробую по порядку , читая документацию и книШки о прелестях 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() .
Вопрос- Что я делаю не так ???
Спасибо .
Всем привет . Решил таки продолжить эту тему . Столкнулся со странным поведением маршрутов . Попробую по порядку , читая документацию и книШки о прелестях 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() .
Вопрос- Что я делаю не так ???
Спасибо .
Можете влипить взаимный.
Я такой муйней не занимаюсь.
Так вы деталей н каких не привели. Конечно ни кто не будет тут гадать что вы хотите сделать.
Я вообще из того что привели, понял что вы в какое то апи хотите загрузить картинку по урлу.
А какие детали я могу привести ? Нужно было сделать домашнее задание загрузка фотографий на сервер . Один способ загрузки , т.е стандартный с локального компьютера я сделал , а вот второй способ я процитировал
пользователь может загрузить фотографию через API, указав URL-адрес фотографии
И вот я так же ломаю голову над этой фразой , поэтому и обратился за помощью .
Кстати , я попробовал зайти на сайт с фотографиями открыл фото , скопировал вручную ссылку (URL) , вставил в диалоговое окно формы , и он загрузил фото по ссылке на сервер . Но для меня остается непонятным смысл этой фразы. Если я правильно понял , то необходимо использовать какую-нибудь стороннюю программу , т.е интегрировать ее в проэкт Laravel . Но поиски в goolge пока не дали результатов. Вот , как то так. Еще раз спасибо , что откликнулись.
P.S И тут я вижу на форуме ставят плюсики , а сейчас смотрю и минусики , но странно , почему такие спецы не комментируют свои действия , а предпочитают оставаться в тени . Наводит на некоторые мысли , хотя лично мне , мнение таких критиков глубоко по ........
Подробнее должно быть написано в доке к апи
Спасибо конечно , но я понял , что я ничего не понял. В книге Стаффера Laravel описаны только маршруты и фильтрация , что практически не дает никакой информации. Ну еще авторизация . А здесь как всегда все молчат , делая вид , что вопрос не достоин их внимания. Ладно , как говорил Никулин , будем искать .