Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Мне интересно, здесь отвечает кто нибудь?
Или вопрос настолько тупой , что нет ответа .
Переделал пока так , вроде как и работает , Прошу хоть покритиковать.
import {Select} from "flowbite-react";
import {router} from "@inertiajs/react";
export default function PageCount({location}) {
function handleChange(e) {
const key = e.target.id;
const value = e.target.value
const values={[key]: value};
router.get(`${location}`,values);
}
return (
<>
<div className="max-w-[10rem]">
<form>
<Select onChange={handleChange}
id="per_page">
<option>Select per page</option>
<option>20</option>
<option>40</option>
<option>60</option>
<option>80</option>
<option>100</option>
</Select>
</form>
</div>
</>
);
}
Добрый день , может кто нибудь поможет в одном вопросе . На сайте https://inertiajs.com/forms нашел такой пример
import { useState } from 'react'
import { router } from '@inertiajs/react'
export default function Edit() {
const [values, setValues] = useState({
first_name: "",
last_name: "",
email: "",
})
function handleChange(e) {
const key = e.target.id;
const value = e.target.value
setValues(values => ({
...values,
[key]: value,
}))
}
function handleSubmit(e) {
e.preventDefault()
router.post('/users', values)
}
return (
<form onSubmit={handleSubmit}>
<label htmlFor="first_name">First name:</label>
<input id="first_name" value={values.first_name} onChange={handleChange} />
<label htmlFor="last_name">Last name:</label>
<input id="last_name" value={values.last_name} onChange={handleChange} />
<label htmlFor="email">Email:</label>
<input id="email" value={values.email} onChange={handleChange} />
<button type="submit">Submit</button>
</form>
)
}
Он великолепно работает с input , но вот моего ума пока не хватает , чтобы переделать его для использования с select . Вот мой пример .
import {Select} from "flowbite-react";
import {router} from "@inertiajs/react";
import {useState} from "react";
export default function Layout() {
const [values, setValues] = useState({
page: "",
})
function handleChange(e) {
const key = e.target.id;
const value = e.target.value
setValues(values => ({
...values,
[key]: value,
}))
router.get('products', values)
}
return (
<>
<div className="max-w-[6rem]">
<form>
<Select onChange={handleChange}
defaultValue={"20"}
id="per_page">
<option>20</option>
<option>40</option>
<option>60</option>
<option>80</option>
</Select>
</form>
</div>
</>
);
}
Проблема в том , что на сервере константа page всегда Null , а id="per_page" передается с опозданием , т.е передает предыдущее значение . Если кто поможет с доработкой примера , заранее благодарен. Спасибо.
Добрый день. Решил продолжить тему laravel+vue . Вопрос скорее информационный. Может кто поделится своим опытом. Вопрос заключается при обновлении количества товара в компоненте в корзине после его добавления в таблицу. Т.е при нажатии кнопки Add, товар добавляется в таблицу , а кол.отображается в компоненте в Header, как обычно . Какие события лучше использовать,чтобы обеспечить асинхронность обновления корзины.Надеюсь Вопрос поставил правильно. Спасибо.
Спасибо всем за помощь . Проблема решилась поиском другого плагина.
https://github.com/outl1ne/nova-multiselect-field
Добрый день. Кто нибудь использовал https://github.com/Benjacho/belongs-to-many-field-nova ???
Что то у меня не получается настроить . Не отображает никаких данных . Или может кто нибудь посоветует более рабочее ? Заранее спасибо.
День добрый . Не стал открывать новую тему , а решил написать здесь. Решил использовать tailwind-component carousel , но столкнулся с проблемой , при интеграции в Laravel Inertia Vue 3 tailwind vite . Даже при копировании кода с официального сайта в Edge и Opera при загрузке страницы не отобращаются изображения , т.е carousel не запускается автоматически , в Chrome работает при начальной загрузке , а если переходить на страницу по Link , то та же самая история . При перезагрузке страницы , вновь работает. Может кто использовал , и поделится опытом ??? Все настройки делал соглассно документации сайта Tailwind Component.
Поиски проблемы в интернете не дали результата.
Заранее спасибо.
А это ? Не помогает ??? https://laravel.com/docs/9.x
Когда я использовал parent_id, запрос пытался найти menu_id и выдавал ошибку
Я находил готовые примеры в инете , где пишут неограниченный уровень вложенности. Делал так как описано в примерах , но была та же проблема , 3 уровня . Как то так.
Миграции , только создают таблицу в базе данных , и никакого отношения к запросам не имеют.
Нет , миграции не обязательно.
Как всегда множество ответов и пожеланий.
Вроде как я ступил,все работает . Но почему не работало , я так и не понял.
Всем спасибо за помощь.
Привет всем ! Даже не знаю с чего начать . Нашел в инете библиотеку 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 .
Спасибо что откликнулись.