In Laravel 4, my controller uses a Blade layout:
class PagesController extends BaseController {
    protected $layout = \         
        $data['title'] = $this->layout->title = 'The Home Page';
$this->layout->content = View::make('home', $data);
I've done this so far because I needed in both the view and master file. It seems if you don't use $this->layout->title it won't be available in the master layout. Improvements welcome!
It appears as though I can pass variables to the entire layout using attributes on the layout object, for example to solve my problem I was able to do the following:
$this->layout->title = 'Home page';
class PagesController extends BaseController {
    protected $layout = 'layouts.master';
    public function index()
    {
        $this->layout->title = "Home page";
        $this->layout->content = View::make('pages/index');
    }
}
At the Blade Template file, REMEMBER to use @ in front the variable.
...
<title>{{ $title or '' }}</title>
...
@yield('content')
...
You can try:
public function index()
{
    return View::make('pages/index', array('title' => 'Home page'));
}
I was able to solve that problem by adding this to my controller method:
    $title = 'My Title Here';
    View::share('title', $title);
$this->layout->title = 'Home page'; did not work either.