سلام خسته نباشید
<?php
if (! function_exists('isActive')){
function isActive($key , $activeClassName = 'active'){
if (is_array($key)){
return in_array(\Illuminate\Support\Facades\Route::currentRouteName() , $key ) ? $activeClassName : '' ;
}
return \Illuminate\Support\Facades\Route::currentRouteName() == $key ? $activeClassName : '' ;
}
}
<li class="nav-item has-treeview {{isActive(['phone-book.create' , 'phone-book.show'] , 'menu-open')}}">
<a href="#" class="nav-link phone-book {{ isActive(['phone-book.create','phone-book.show']) }}">
<i class="nav-icon fa fa-table"></i>
<p>
دفترچه تلفن
<i class="fa fa-angle-left right"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item has-treeview">
<a href="#" class="nav-link">
<p>
دفترجه تلفن ها
<i class="fa fa-angle-down right"></i>
</p>
</a>
</li>
@foreach($phoneBooks as $phoneBook)
<li class="nav-item">
<a href="{{ route("phone-book.show",["phone_book" => $phoneBook->getId() ]) }}" class="nav-link {{isActive("phone-book.show")}}">
{{-- <i class="fa fa-circle-o nav-icon"></i> --}}
{{-- <span class="glyphicon glyphicon-chevron-left"></span> --}}
<span class=""><img src="{{ url("dist/img/icons8-phone-book-48.png") }}" alt="" style="width:20px;height:20px"></span>
<p>{{$phoneBook->getName() }}</p>
</a>
</li>
@endforeach
<li class="nav-item">
<a href="{{ route("phone-book.create")}}" class="nav-link {{ isActive('phone-book.create') }} ">
{{-- <i class="fa fa-circle-o nav-icon"></i> --}}
<i class="nav-icon fa fa-plus"></i>
<p>ایجاد دفترچه تلفن</p>
</a>
</li>
</ul>
</li>
چطوری میتونم این مشکلو حل کنم که همشون با هم اکتیو نشن؟؟
ممنون میشم راهنماییم کنید
ببینید
اشتباه اولتون اینه ک چیزی ک ارسال میکنید رو توی متدتون dd نمیگیرید همشو دونه دونه ببینید خروجی و جواب چیه و چرا کار نمیکنه
url مثل چیزی ک فرستادید خودتون کامل میاد localhost/8000 رو هم ارسال میکنه
\URL::route('home', [], false)
به این شکل به جای url توی ویو از این متد استفاده کنید
و لطفا لطفا در تمام مراحل خروجی و رشته و مقایسه رو چک کنید و مشکل رو سرچ کنید گوگل
من زدم
get route name uri
بیشتر جنبه راهنمایی کلی داشت ک مشکلتون سر نوع چک کردن بود بقیش رو تلاش کنید پیدا کنید چون پیدا کردن مشکل و سرچ کردن اصلی ترین بخش برنامه نویسی هست.
البته فک کنم مشکلتون برطرف بشه با این قطعه اخری که فرستادم
اما کلی عرض کردم خدمتتون که سرچ خیلی مهمه.
سلام @sahandi81
ممنونم ک پاسخ دادین
Route::post('/phonebook/{phonebook}', [App\Http\Controllers\IndexController::class, 'show'])->name('phonebook.show')->withoutMiddleware(['auth','web']);
بفرمایید
این روتش هست
بجز این روش چیزی هست ک بتونید کمکم کنید
سلام
متد شما درست هست من هم ازش استفاده کردم قبلا مشکلی نداره (از آموزش مهندس موسوی)
ولی شما توی ساید بارتون اکثر جاهاش فراخوانی کردید این اکتیو رو
تفاوت حالتی که منو باید باشه چیزی که انتظار دارید خودتون رو با route مد نظر در هر دو حالت create و show نمایش بدید
من فک میکنم اشکال از view باشه و نحوه استفاده در بخش های مختلف
شما توی حلقه به همشون گفتید اگر route این بود بیا و فعال باش
خب ب نظر نحوه قرار دادنشون مشکل داره
یک روت برای همه ی اون ها توانایی فعال کردن رو داره
با این حال درک دقیقی از ویو ندارم توی عکس ک کدوما اکتیون ک میگید همشون چون فقط دفترچه تلفن باز هست و زیر مجموعش دیده میشه
حالت غیر فعالش رو ک مد نظر هست رو هم قرار بدید و روتی ک باید وقتی باز مبشه و دقیقا چیزی ک میخوایید فعال باشه رو بیشتر توضیح بدید
در پایان معمولا ساید بار در رابطه با صفحاتی هست ک طراحی شده و کار هایی رو انجام میده
معمولا به صورت static نوشته میشه کامل و بعد اگر سطح دسترسی ای وجود داره از gate ها و بقیه موارد استفاده میشه برای مدیریتش
چون توی حلقه تولید میکنید و ادرسشون رو میزارید میگم
در کل به نوع پروژه خودتون و ایده ی خودتون مرتبطه که ب چه شکل ترجیه میدید انجام بشه و کاملا دلخواه هست اما اگر صفحات پویا تولید نمیشن بهتر هست ثابت بنویسید و اگر نقش فیلتر رو داره این دفتر تلفن ها که همشون یک روت با تلفن های مختلف رو باز میکنن میتونستید راحت تر یک صفحه طراحی کنید و فیلتر مناسبش رو توی اون صفحه قرار بدید چون همشون قراره شماره تلفن به آدم تحویل بدن
چون الان برای چند بخش مختلف هم اگر بخوان شماره بردارن باید درخواست بره به صفحه ی دیگه ای و کسی که کارش مثلا تو شرکت منشی باشه و بخواد همش زنگ بزنه به اینو اون مجبوره هی جابه جا بشه توی صفحات.
باز هم میگم دلخواه هست ایده ی کارتون و فقط ب عنوان نظر بود
سلام @salar.mohammad2013
بی اندازه ممنونم ازتون ک وقت گذاشتین و انقدر کامل توضیح دادین🌺☘️
احساس میکنم باید بشه اینی ک میخوام رو پیاده سازی کرد
ببینید
@foreach($phoneBooks as $phoneBook)
<li class="nav-item">
<a href="{{ route("phone-book.show",["phone_book" => $phoneBook->getId() ]) }}" class="nav-link {{isActive("phone-book.show")}}">
{{-- <i class="fa fa-circle-o nav-icon"></i> --}}
{{-- <span class="glyphicon glyphicon-chevron-left"></span> --}}
<span class=""><img src="{{ url("dist/img/icons8-phone-book-48.png") }}" alt="" style="width:20px;height:20px"></span>
<p>{{$phoneBook->getName() }}</p>
</a>
</li>
@endforeach
من الان یک loop دارم که میخوام توی اون loopبگم بصورت داینامیک روی هر کدوم از دفترجه تلفن ها کلیک کرد،فقط اون دفترچه تلفن مورد نظر اکتیو بشه ب جای اینکه همشون با هم اکتیو بشن
نمیدونم اینو باید چطوری انجام بدم
من باز هم از شما ممنونم بخاطر توضیحات کاملتون 🙏🌸
@foreach($phoneBooks as $phoneBook)
<li class="nav-item">
<a href="{{ route("phone-book.show",["phone_book" => $phoneBook->getId() ]) }}" class="nav-link {{$loop->first ? 'active' : '' }}">
{{-- <i class="fa fa-circle-o nav-icon"></i> --}}
{{-- <span class="glyphicon glyphicon-chevron-left"></span> --}}
<span class=""><img src="{{ url("dist/img/icons8-phone-book-48.png") }}" alt="" style="width:20px;height:20px"></span>
<p>{{$phoneBook->getName() }}</p>
</a>
</li>
@endforeach
اینو ببینید لطفا
الان وقتی از $loop->first استفاده کردم اولیشو فعال کرد
میخوام این حالت برای بقیشون هم انجام بشه
شما برای همه ی دفترچه تلفن ها روت phone book show رو دادید
خب وقتی یکی فعال بشه ب نظر خودتون بقیه فعال نمیشه؟
مگر اینکه نام روت قابلیت مدل بایندیگ داشته باشه که مثلا اون مدل phonebook خودتون که به route دادید رو به نام هم بتونید بدید که نام یکتایی بهتون بده ک فک نمیکنم باشه
به جاش تابع is active رو باید عوض کنی
به جای route name باید از خود url کمک بگیری و url مورد نیاز رو برای چک پاس بدی بهش و بررسی کنی
مستندات دریافت url
حتی با یه if ساده هم میتونی تست کنی
فقط یکم باید وقت بزاری بخش مورد نیازتو از آدرس حذف کنی و چک کنی که همون دفتر تلفن هست یا نه که بیایی active کنی
چون route name شما برای همه ی دفتر تلفن هات نام یکسان داره و نمیتونی ازش استفاده کنی اینجوری
@salar.mohammad2013
متوجه شدم
ی عااااالمه ممنونم از راهنماییتون
الان میرم ب اینصورتی ک گفتین سرچ میکنم تا بتونم انجامش بدم و ب جواب برسم
خیلی خیلی ممنونم
اگر اوکی شد بهتون میگم
سلام@salar.mohammad2013
ببخشید من تابع isActive رو به اینصورت نوشتم
در سمت بلید هم urlهارو پاس دادم به تابع isActive اما درست کار نکرد😥
<?php
if (! function_exists('isActive')){
function isActive($key , $activeClassName = 'active'){
if (is_array($key)){
return in_array(\Illuminate\Support\Facades\URL::current() , $key ) ? $activeClassName : '' ;
}
return \Illuminate\Support\Facades\URL::current() == $key ? $activeClassName : '' ;
}
}
سلام
توی همین is_active
dd بگیرید مقدار
\Illuminate\Support\Facades\URL::current()
و مقدار
$key
و مقدار
in_array(\Illuminate\Support\Facades\URL::current() , $key )
ببینید چی داره با چی مقایسه میشه
@salar.mohammad2013
\Illuminate\Support\Facades\URL::current() مقدارش یک url هستhttp://localhost:8000/users
ولی مقداری $key برابره با users
🤓
\Illuminate\Support\Facades\Request::getRequestUri()
از این استفاده کن
دامنه ی اصلی رو حذف میکنه و درخواست رو میده بهت یعنی فقط user
اشکال نداره dd بگیری میبینی کار میکنه
phpstorm نمیشناسه
جای درستی قرار دادی همینجا منظورم بوده ک گذاشتی
ببخشید آقای @salar.mohammad2013 بزرگوار
اینو ببینید
برای قسمت اول کدم گذاشتمش ولی کار نمیکنه
<li class="nav-item has-treeview {{ isActive([url('users') ,url('users.create') ,url('users.edit') ], 'menu-open')}}">
<a href="{{ route('users')}}" class="nav-link users {{ isActive([url('users') ,url('users.create') ,url('users.edit') ]) }}">
<i class="nav-icon fa fa-users"></i>
<p>
مخاطبان
<i class="right fa fa-angle-left"></i>
</p>
</a>
<ul class="nav nav-treeview">
<li class="nav-item">
<a href="{{ route('users') }}" class="nav-link {{ isActive(url('users')) }} ">
<i class="fa fa-circle-o nav-icon"></i>
<p>لیست مخاطبان</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('users.create') }}" class="nav-link {{ isActive(url('users.create')) }} ">
<i class="fa fa-circle-o nav-icon"></i>
<p>افزودن مخاطب جدید</p>
</a>
</li>
</ul>
</li>
ببخشید انقدر سوال پرسیدم ازتون و اذیتتون کردم ولی ب جواب نرسیدم
شرمنده
ببینید
اشتباه اولتون اینه ک چیزی ک ارسال میکنید رو توی متدتون dd نمیگیرید همشو دونه دونه ببینید خروجی و جواب چیه و چرا کار نمیکنه
url مثل چیزی ک فرستادید خودتون کامل میاد localhost/8000 رو هم ارسال میکنه
\URL::route('home', [], false)
به این شکل به جای url توی ویو از این متد استفاده کنید
و لطفا لطفا در تمام مراحل خروجی و رشته و مقایسه رو چک کنید و مشکل رو سرچ کنید گوگل
من زدم
get route name uri
بیشتر جنبه راهنمایی کلی داشت ک مشکلتون سر نوع چک کردن بود بقیش رو تلاش کنید پیدا کنید چون پیدا کردن مشکل و سرچ کردن اصلی ترین بخش برنامه نویسی هست.
البته فک کنم مشکلتون برطرف بشه با این قطعه اخری که فرستادم
اما کلی عرض کردم خدمتتون که سرچ خیلی مهمه.
@salar.mohammad2013
درست شد
از صمیم قلبم از خدا میخوام ب علمتون برکت بده
ممنونم بابت وقتی ک گذاشتین صبرتون و علمتون
ممنووووونم🌺🌺🌺☘️
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟