سلام دوستان من خطای زیر را میگیرم موقع نمایش view کلافم کرده
Undefined variable $lang
این view
@extends('layout')
@section('body')
{{ $lang }}
{{-- @php
if ($lang=="fa")
{
$url=route('updatelang');
$status='<a href="'.$url.'"><label class="badge badge-success">فارسی</label></a>';
}
else {
$url=route('updatelang');
$status='<a href="'.$url.'"> <label class="badge badge-warning"> English </label> </a>';
}
@endphp --}}
<hr>
{!!$status!!}
<hr>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('Dashboard') }}</div>
<div class="card-body">
@if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
@endif
{{ __('You are logged in!') }}
</div>
</div>
</div>
</div>
</div>
@endsection
این روت
Route::get('/updatelang', [App\Http\Controllers\HomeController::class, 'updatelang'])->name('updatelang');
اینم کنترلر
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
return view('home');
}
public function updatelang(){
$lang=App::getlocale();
if($lang=='en')
{
App::setlocale('fa');
$lang=App::getlocale();
}
else
{
App::setlocale('en');
$lang=App::getlocale();
}
return view('home',compact('lang'));
}
}
ممنون میشم راهنمایی کنید🙏
با سلام اگه منظورتون رو خوب متوجه شده باشم شما میخواید کاربر هرموقع روی یه دکمه خاص زد زبان سایت عوض بشه و شما متغیری به نام lang (Language) دارید که زبان سایت رو مشخص میکنه و وقتی برای اولین بار اون صفحه (View) میخواد صدا زده بشه اصلا متغیری وجود نداره که بررسی بشه .... پیشنهاد من به شما اینکه حتما همیشه قبل از صدا زدن اون صفحه (View) بهش یک مقدار پیشفرض بدید و برای View ارسالش بکنید ، مثلا همیشه مقدارش رو fa قرار بدید.
فکر میکنیم تابع index برای صدا زدن صفحه home هستش ، بهتره بنویسید :
App::setlocale('fa');
return view('home',compact('lang'));
اگر بنده کد رو اشتباه نوشتم خودتون تصحیح بکنید چون منطق یک کاری مهمه نه فقط ارائه کد.
موفق باشید
سلام
مطمئن بشید که متغییر lang رو بدرستی پاس دادید؟ ( که به نظر میاد به درستی انجام شده)
این کامند رو وارد کنید.
php artisan view:clear
سلام.
nر ابتدا فانکشن updatelang، دستور زیر رو قرار بدین تا مشخص بشه اصلا وارد این فانشکن میشه یا نه.
dd('OK');
@samanzdev
@rezajahangir
میدونید همونجور که احتمالا از کنترلر متوجه شدید من میخام دکمه ای واسه کاربر تولید کنم که با کلیک روی دکمه هی زبان سایتما تغییر بده اگه فارسی بود بشه انگلیسی و برعکس.اما در واقع خب اصن این تابع موقعی اجرا میشه که من روی دکمه بزنم و بعد وارد updatelang بشه و متغیرlang فرستاده بشه به ویو اما اشکال من اینجاست خب اون اول که میرم توی ویو اصن تابع updatelang اونموقع اجرا نشده که بخاد متغیر lang فرستاده بشه.اره خلاصه فک میکنم مشکلم اینه اما راهه حلی فعلا واسش ندارم.
@samanzdev
ممنون منظورتون اینه؟؟
@php
if (isset($lang))
{
if ($lang=="fa")
{
$url=route('updatelang');
$status='<a href="'.$url.'"><label class="badge badge-success">فارسی</label></a>';
}
else {
$url=route('updatelang');
$status='<a href="'.$url.'"> <label class="badge badge-warning"> English </label> </a>';
}
}
@endphp
{!!$status!!}
خب اینجوری که وقتی $lang وجود نداره اصن دکمه ها را نشون نمیده واسه تغییر زبان.
با سلام اگه منظورتون رو خوب متوجه شده باشم شما میخواید کاربر هرموقع روی یه دکمه خاص زد زبان سایت عوض بشه و شما متغیری به نام lang (Language) دارید که زبان سایت رو مشخص میکنه و وقتی برای اولین بار اون صفحه (View) میخواد صدا زده بشه اصلا متغیری وجود نداره که بررسی بشه .... پیشنهاد من به شما اینکه حتما همیشه قبل از صدا زدن اون صفحه (View) بهش یک مقدار پیشفرض بدید و برای View ارسالش بکنید ، مثلا همیشه مقدارش رو fa قرار بدید.
فکر میکنیم تابع index برای صدا زدن صفحه home هستش ، بهتره بنویسید :
App::setlocale('fa');
return view('home',compact('lang'));
اگر بنده کد رو اشتباه نوشتم خودتون تصحیح بکنید چون منطق یک کاری مهمه نه فقط ارائه کد.
موفق باشید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟