Laravel 5.2 session flash working on localhost but not working on server? - laravel-4

Session flash working fine on local but not working on server in Laravel 5.2?
In controller:
Session::flash('key', value");
return Redirect::to('/');
In view:
#if (Session::has('key') && Session::get('key')!='')
alert('.......');
#endif

read this :https://laravel.com/docs/5.2/responses#redirecting-with-flashed-session-data
Route::post('user/profile', function () {
// Update the user's profile...
return redirect('dashboard')->with('status', 'Profile updated!');
});
in view/blade
#if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
#endif

Related

Call to a member function has() on string in laravel

I am working on user authentication. When a user provides invalid email or password, I want to redirect him to login.blade.php with a flash error message.
// Auth/LoginController:
public function login(Request $request)
{
$user=User::where('email',$request->email)->first();
if(!is_null($user))
{
if($user->status==1)
{
if(Auth::guard('web')->attempt(['email'=>$request->email,'password'=>$request->password],$request->remember))
return redirect()->intended(route('index'));
}
}
else
{
if(Auth::guard('web')->attempt(['email'=>$request->email,'password'=>$request->password],$request->remember))
{
if(Auth::check())
{
Auth::logout();
}
$user->notify(new VerifyRegistration($user));
session()->flash('success','A new confirmation mail has sent to you...Please check and confirm your email');
return redirect('/');
}
else
{
session()->flash('errors','Password is incorrect!!');
return redirect()->route('login');
}
}
}
else
{
session()->flash('errors','Email or Password is incorrect!!');
return redirect('/login');
}
}
I am using the default laravel login.blade.php.
When user enter's wrong password rather than setting up session flash message please use below given code to redirect user in else condition.
return redirect()->route('login')->with('error','Invalid password.');
On login template you can display errors like
#if (session('success'))
<div class="alert alert-success">
<p>{{ session('success') }}</p>
</div>
#endif
#if (session('warning'))
<div class="alert alert-warning">
<p>{{ session('warning') }}</p>
</div>
#endif
#if (session('error'))
<div class="alert alert-error">
<p>{{ session('error') }}</p>
</div>
#endif

How to Set & Get Session Data in Laravel Package Development

I am developing a package with a contact form in Laravel. I'm trying to set & get session data, but it's not working with the following.
View
#if(session('success'))
<div class="alert alert-success alert-dismissible">
×
{{session('success')}}
</div>
#endif
Controller
public function store(Request $request)
{
//Validation
$request->validate([
'email'=>'required|max:50|unique:contact_forms,email'
]);
//Data
$contact_form = new ContactForm();
$contact_form->full_name = $request->full_name;
$contact_form->mobile = $request->mobile;
$contact_form->email = $request->email;
//Save
$contact_form->save();
//Return back
return back()->with('success','Record inserted successfully');
}
Route
Route::group(['namespace' => 'W3public\ContactForm\Http\Controllers'], function () {
Route::get('contact-us', 'ContactFormController#index');
Route::post('contact-us', 'ContactFormController#store')->name('contact-us');
});
How can I set/get session data in package development in Laravel?Thanks in advance.
Best way of doing this is flash session messages
Redirect as
$request->session()->flash('alert-success', 'Record inserted successfully!');
and in your view file
<div class="flash-message">
#foreach (['danger', 'warning', 'success', 'info'] as $msg)
#if(Session::has('alert-' . $msg))
<p class="alert alert-{{ $msg }}">{{ Session::get('alert-' . $msg) }} ×</p>
#endif
#endforeach

Session flash in redirect is not working

I have this code in my controller
public function deleteDependent(Request $request)
{
HMO::deleteDependent($request);
if(session()->has('hmo_id'))
{
session()->flash('status', 'Task was successful!');
return redirect()->route('edit-user', request('hmo_id'));
}
else
{
return redirect()->route('edit', request('hmo_id'));
}
}
And also this is my code in view
<div class="col-lg-6 col-lg-offset-1">
#if(session()->has('status'))
<div class="alert alert-success">
<strong>Success!</strong> your request is waiting for Admin approval.
</div>
#endif
</div>
Redirect is working properly but the session flash is not read by the view,
what am I missing ?

Laravel return flash message

I am trying to return a flash message depending on the outcome of an function however I don't really know how to do this properly, can someone help me with fixing this?
Controller:
public function postDB(Requests\NameRequest $request) {
$newName = trim($request->input('newName'));
$newLat = $request->input('newCode');
$websites = new Website();
$websites->name = $newName;
$websites->html = $newLat;
$websites->save();
if ($websites->save())
{
$message = 'success';
}else{
$message = 'error';
}
return redirect()->back()->withInput()->with('message', 'Profile updated!');
}
Request:
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* #return array
*/
public function rules()
{
return [
'img' => 'file|image',
];
}
public function messages()
{
return [
'img.image' => 'File type is not supported! Use files with extension .jpg/.jpeg/.gif',
];
}
Template:
#if (session('status'))
#if (session('status')=="success")
<div class="alert alert-success">
{{ session('message') }}
</div>
#else
<div class="alert alert-error">
{{ session('message') }}
</div>
#endif
#endif
Route:
Route::group(['middleware' => ['web']], function () {
Route::get('home', 'BuilderController#homepage');
Route::get('pages', 'BuilderController#websites');
Route::get('template', 'BuilderController#templates');
Route::post('template2', 'BuilderController#postDB');
Route::post('template', 'BuilderController#testing');
Route::get('logout', 'BuilderController#getLogout');
Route::get('/website/{name}', 'BuilderController#website');
});
Solution :
There could be only one reason for this issue.
The laravel will pass the flash messages only if it's registered inside the middleware web
i.e.,
Route::group(['middleware' => ['web']], function () {
//The back()'s url should be registered here
});
Update :
It seems you need to redirect back with message and inputs
So, You can do like this
if ($request->hasFile('img')) {
$message = 'success';
} else {
$message = 'error';
}
return redirect()->back()->withInput()->->with('message', $message);
Update 2 :
#if (session('status'))
#if (session('status')=="success")
<div class="alert alert-success">
Congrats! Everything was fine
</div>
#else
<div class="alert alert-error">
Oops! Something went wrong
</div>
#endif
#endif
Note : You can pass the status param to your wish
If you pass message as a flash parameter name, use it, not status.
#if (session('message'))
#if (session('message')=="success")
<div class="alert alert-success">
Congrats! Everything was fine
</div>
#else
<div class="alert alert-error">
Oops! Something went wrong
</div>
#endif
#endif

Laravel 5 Pass and get a flash data not working

i want to pass a flash data from store function to add function but i cant get it to work, i always get null;
here is my controller
public function add()
{
return view('cars.add');
}
public function store(CarFormRequest $request)
{
$car = new Cars(array(
'name' => $request->get('name'),
'color_id' => $request->get('color')
));
$car->save();
$car->position_id = $car->id;
$car->save();
return redirect('/cars/add')->with('status', 'A Car has been added');
}
here is my view:
#if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
#endif
Add in your controller
session()->flash('status', 'Task was successful!');
and in View:
#if (session->has('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
#endif

Resources