title: Issues with Laravel 5's Route::bind()
body: <p>I'm having a little problem trying out Laravel 5.</p>
  
  <p>I followed the whole tutorial in laracasts and tried to do everything the same exact way they do it there, only I changed the name of the model, table and controller.</p>
  
  <p>At some point something with Route::bind() stopped working and because of that, now when I try to access a route with a Wild Card, the view will come up, but without the data.</p>
  
  <p>This is my <strong>routes.php</strong></p>
  
  <pre><code>Route::bind('singers', function($slug, $route){
  return App\Singer::whereSlug($slug)-&gt;first();
  });
  
  Route::resource('singers', 'SingerController', [
                                              'names' =&gt; [
                                                      'index' =&gt; 'singers_index',
                                                      'show' =&gt; 'singers_show',
                                                      'edit' =&gt; 'singers_edit',
                                                      'update' =&gt; 'singers_update',
                                                      'create' =&gt; 'singers_create',
                                                      'store' =&gt; 'singers_store',
                                                      'destroy' =&gt; 'singers_destroy',
                                                          ],
                                                  ]);
  </code></pre>
  
  <p>These are some snippets of my <strong>SingerController</strong></p>
  
  <pre><code>namespace App\Http\Controllers;
  
  use Illuminate\Routing\Controller;
  use Illuminate\Http\Request;
  use App\Http\Requests\CreateSingerRequest;
  use App\Singer;
  
  class SingerController extends Controller {
  
      public $restful = true;
  
      public function __construct(Singer $singer){
          $this-&gt;singer = $singer;
      }
  
      public function index()
      {
          $singers = $this-&gt;singer-&gt;orderBy('id', 'DESC')-&gt;get();
          return view('singers.list',compact('singers'));
      }
  
      public function show(Singer $singer){
          return view('singers.show', compact('singer'));
      }
  
      public function edit(Singer $singer){
          return view('singers.edit', compact('singer'));
      }
  
      public function update(Singer $singer, Request $request){
          $singer-&gt;fill($request-&gt;input());
          $singer-&gt;save();
          return view('singers.show', compact('singer'));
      }
  
      public function create(){
          return view('singers.new');
      }
  
      public function store(Singer $singer, CreateSingerRequest $request){
          $singer-&gt;create($request-&gt;all());
          return redirect()-&gt;route('singers_index');
      }
  
      public function destroy(Singer $singer){
          $singer-&gt;delete();
          return redirect()-&gt;route('singers_index');
      }
  }
  </code></pre>
  
  <p>Now. The reason I try to bind the variable 'singers' in routes.php, is because they do it in the videos, and that way, the code in the Controller is shorter. And it WAS actually working. And then I just added the destroy function and it all stopped working.
  As I said, I can see the views, the tags, and any other text in them, but not the data that I pass, except for the index function, since I actually do the Eloquent search in the function itself.</p>
  
  <p>Now here's a snippet of my show.blade.php</p>
  
  <pre><code>&lt;b&gt;Full Name: &lt;/b&gt; {{ $singer-&gt;name.' '.$singer-&gt;lastname }}
  &lt;br&gt;
  &lt;b&gt;Age: &lt;/b&gt; {{ $singer-&gt;age }}
  &lt;br&gt;
  &lt;b&gt;Country: &lt;/b&gt; {{ $singer-&gt;country }}
  &lt;br&gt;
  &lt;br&gt;
  &lt;p&gt;
      &lt;b&gt;Bio: &lt;/b&gt; {!! nl2br($singer-&gt;bio) !!}
  &lt;/p&gt;
  
  {!! HTML::linkRoute('singers_edit', 'Update', [$singer-&gt;slug], ['class' =&gt; 'btn btn-primary']) !!}
  
  {!! Form::open(['method'=&gt;'DELETE', 'route'=&gt;['singers_destroy', $singer-&gt;slug]]) !!}
      &lt;div class="form-group"&gt;
          {!! Form::submit('Delete', ['class'=&gt;'btn btn-danger']) !!}
      &lt;/div&gt;
  {!! Form::close() !!}
  </code></pre>
  
  <p>My index view works fine, and the other views are just forms, but any view that I'm passing variables to isn't working, whether I pass it by doing this:</p>
  
  <pre><code>return view('singers.show',compact('singer'));
  </code></pre>
  
  <p>or this:</p>
  
  <pre><code>return view('singers.show')-&gt;with('singer',$singer);
  </code></pre>
  
  <p>So to recap:</p>
  
  <ul>
  <li>index -> fine.</li>
  <li>show -> won't show any data.</li>
  <li>create -> actually works and the new record is saved.</li>
  <li>edit -> error comes up because the wildcard isn't sent to the
  controller.</li>
  </ul>
  
  <p><strong>Edit</strong></p>
  
  <p>Paths</p>
  
  <ul>
  <li><strong>index (GET)</strong>: /singers</li>
  <li><strong>show (GET)</strong>: /singers/{singers}</li>
  <li><strong>create (GET)</strong>: /singers/create</li>
  <li><strong>store (POST)</strong>: /singers</li>
  <li><strong>edit (GET)</strong>: /singers/{singers}/edit</li>
  <li><strong>update (PATCH)</strong>: /singers/{singers}</li>
  <li><strong>destroy (DELETE)</strong>: /singers/{singers}</li>
  </ul>
  
  <p>Keep in mind that the {singers} wildcard is actually $singer->slug in each case, but the Route::bind() function doesn't allow me to call it whatever I want.
  And of course before the first slash comes myserver/myproject/public</p>