Skip to content

Instantly share code, notes, and snippets.

@JeffreyWay
Created November 19, 2012 16:37
Show Gist options
  • Save JeffreyWay/4111700 to your computer and use it in GitHub Desktop.
Save JeffreyWay/4111700 to your computer and use it in GitHub Desktop.
Laravel 4 Thoughts/Questions/Etc.

Laravel 4 Thoughts/Questions/Etc.

This is just a random list of notes, as I dig into Laravel 4. If you have any feedback/solutions, please leave a comment. I'll be compiling everything for an article on Nettuts+, when the framework is officially in Beta. This will be updated over the course of the week.

  • Running composer dump-autoload after every new controller is a pain. Can this not be automated through artisan controller:make ControllerName?

  • Seems that some of the View HTML helpers are missing. No HTML::script().

  • Route::resource('tasks', 'TasksController') doesn't seem to create named routes. This is a big deal, if not. What's the solution?

  • If you come from the Rails-flavor of REST, it'll take some re-tooling to learn the new RESTful method names. PHP can't use names, like "new," so that can be confusing. "create" is used instead.

  • Routing wildcards are different in L4. Rather than (:num) or (:any), you can name them. Route::get('tasks/{id}');. Much better.

  • A lot of the helpers are missing. I guess I see why that was done, but I'll likely end up implementing the most used ones on my own (dd(), etc.)

  • Why does Laravel 4 now require me to specify the table name in my models? Why not use a natural default so that I can type less - such as the plural form of the class name?

  • return Task::all() will now return a JSON representation, which is super helpful. It makes building RESTful APIs along with something like Backbone as easy as possible.

  • artisan key:generate doesn't seem to be currently available.

@JonoB
Copy link

JonoB commented Dec 2, 2012

Creating nested controllers with artisan doesn't seem to work

php artisan controller:make blog/PostsController

// folder must exit
// filename is correct
// class name is incorrect: 
class blog/PostsController extends Controller {
...
}

// should be 
class PostsController extends Controller {
...
}

Its created in the correct folder, but the controller name comes out :

@JonoB
Copy link

JonoB commented Dec 2, 2012

When doing reverse routing, you now have to specify the key's name for replacement

// L3
HTML::link_to_action('posts@edit', 'Edit', array($post->id)); 

// L4
HTML::linkAction('PostsController@Edit', 'Edit', array('id' => $post->id)); 

@JonoB
Copy link

JonoB commented Dec 2, 2012

Nested controllers comment above did not come out right

// should be 
class Blog_PostsController extends Controller {
...
}

@taylorotwell
Copy link

$this->layout is available for controllers in the latest updates to the app repository (yesterday). Also available is wildcard (CodeIgniter) style routing (also available in L3): Route::controller('UserController', 'users');

@taylorotwell
Copy link

Also, when creating nested controllers, use the --path option available on the command (relative to the project root). Although I should note that nested controllers may not be as necessary as controller routing is totally de-coupled from file system structure. Although, you are free to use them for organizational purposes.

@sq2
Copy link

sq2 commented Dec 9, 2012

Not sure if the following is common knowledge or not. Tripped me up a little, though.

Determining whether a named route is the current route has changed. Not sure if the new way worked in L3, too. But, it's nice and short.

Request::route()->is('home'); // L3 from the docs
Route::is('home'); // L4

Noticed some Blade syntax changes:

@layout('master') // L3
@extends('master') // L4

@endsection // L3
@stop // L4

@DavidStrada
Copy link

To add support to Html/Scripts/Forms add this to your composer.json

"meido/html": ">=1.0.0",
 "meido/form": ">=1.0.0"

and this to your app.php

'Meido\HTML\Providers\HTMLServiceProvider',
'Meido\Form\Providers\FormServiceProvider',

@dillinghamio
Copy link

is there a general consensus regarding using nested resources? IE: Route::resource('posts.comments.votes')

Form::open(array('route' => 'posts.comments.votes'))
HTML::link_to_route('posts.comments.votes')
URL::to_route('posts.comments.votes')

If not maybe something like explode on ' . ' and set keys

array( 'post' => 'id', 'comment''=> 'id', 'vote' => 'id' )

or even better, have it read from the url somehow.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment