Laravel provides multiple ways to pass data between controllers, views, routes, and sessions. You can use the view()
function to send data from a controller to a Blade view. Route parameters and form inputs allow dynamic data handling via the Request
object. Sessions and flash messages help store data across requests. Choosing the right method depends on your use case, such as temporary messages, persistent storage, or dynamic routing.
Passing Data from Controller to View
In Controller:
public function index() {
$name = 'Priya';
return view('welcome', ['name' => $name]);
}
In Blade View (welcome.blade.php
):
<h1>Welcome, {{ $name }}</h1>
2. Passing Data via Routes (Route Parameters)
In web.php
:
Route::get('/user/{id}', function ($id) {
return "User ID: " . $id;
});
Accessed like:
/user/5 → Output: User ID: 5
3. Passing Data via Form (POST Request)
Form View:
<form action="{{ route('submit') }}" method="POST">
@csrf
<input type="text" name="email">
<button type="submit">Send</button>
</form>
In web.php
:
Route::post('/submit', function (Illuminate\Http\Request $request) {
return "Email: " . $request->input('email');
})->name('submit');
4. Using Session to Pass Data
Store session data:
session(['user' => 'Priya']);
Retrieve session data:
$user = session('user');
echo $user;
5. Redirect with Data (Flash Session)
Controller:
return redirect()->route('home')->with('status', 'Profile updated!');
In Blade:
@if (session('status'))
{{ session('status') }}
@endif
Summary – Laravel Data Passing Methods
Use Case | Laravel Method |
---|---|
View from Controller | view(..., [...]) |
Route parameter | /route/{param} |
Form data (POST) | $request->input() |
Temporary message after redirect | with('key', 'value') |
Persist data between pages | session(['key' => val]) |