Browse Source

Merge remote-tracking branch 'upstream/develop' into develop

Chris Berthe 12 years ago
parent
commit
3b6191ec16

+ 1 - 1
artisan

@@ -4,7 +4,7 @@
  * Laravel - A PHP Framework For Web Artisans
  *
  * @package  Laravel
- * @version  3.2.3
+ * @version  3.2.4
  * @author   Taylor Otwell <taylorotwell@gmail.com>
  * @link     http://laravel.com
  */

+ 12 - 5
laravel/database/eloquent/relationships/has_many_and_belongs_to.php

@@ -325,14 +325,21 @@ class Has_Many_And_Belongs_To extends Relationship {
 	{
 		$foreign = $this->foreign_key();
 
+		$dictionary = array();
+
+		foreach ($children as $child)
+		{
+			$dictionary[$child->pivot->$foreign][] = $child;
+		}
+
 		foreach ($parents as &$parent)
 		{
-			$matching = array_filter($children, function($v) use (&$parent, $foreign)
-			{
-				return $v->pivot->$foreign == $parent->get_key();
-			});
+			$parent_key = $parent->get_key();
 
-			$parent->relationships[$relationship] = array_values($matching);
+			if (isset($dictionary[$parent_key]))
+			{
+				$parent->relationships[$relationship] = $dictionary[$parent_key];
+			}
 		}
 	}
 

+ 12 - 0
laravel/documentation/changes.md

@@ -2,6 +2,8 @@
 
 ## Contents
 
+- [Laravel 3.2.4](#3.2.4)
+- [Upgrading From 3.2.3](#upgrade-3.2.4)
 - [Laravel 3.2.3](#3.2.3)
 - [Upgrading From 3.2.2](#upgrade-3.2.3)
 - [Laravel 3.2.2](#3.2.2)
@@ -31,6 +33,16 @@
 - [Laravel 3.1](#3.1)
 - [Upgrading From 3.0](#upgrade-3.1)
 
+<a name="3.2.4"></a>
+## Laravel 3.2.4
+
+- Speed up many to many eager loading mapping.
+
+<a name="upgrade-3.2.3"></a>
+## Upgrading From 3.2.3
+
+- Replace the **laravel** folder.
+
 <a name="3.2.3"></a>
 ## Laravel 3.2.3
 

+ 1 - 1
laravel/documentation/install.md

@@ -40,7 +40,7 @@ If you are having problems installing, try the following:
 
 - Make sure the **public** directory is the document root of your web server. (see: Server Configuration below)
 - If you are using mod_rewrite, set the **index** option in **application/config/application.php** to an empty string.
-- Verify that your storage folder and the folders within in are writable by your web server.
+- Verify that your storage folder and the folders within are writable by your web server.
 
 <a name="server-configuration"></a>
 ## Server Configuration: Why Public?

+ 22 - 4
laravel/documentation/session/usage.md

@@ -5,6 +5,7 @@
 - [Storing Items](#put)
 - [Retrieving Items](#get)
 - [Removing Items](#forget)
+- [Flashing Items](#flash)
 - [Regeneration](#regeneration)
 
 <a name="put"></a>
@@ -16,10 +17,6 @@ To store items in the session call the put method on the Session class:
 
 The first parameter is the **key** to the session item. You will use this key to retrieve the item from the session. The second parameter is the **value** of the item.
 
-The **flash** method stores an item in the session that will expire after the next request. It's useful for storing temporary data like status or error messages:
-
-	Session::flash('status', 'Welcome Back!');
-
 <a name="get"></a>
 ## Retrieving Items
 
@@ -53,6 +50,27 @@ You can even remove all of the items from the session using the **flush** method
 
 	Session::flush();
 
+<a name="flash"></a>
+## Flashing Items
+
+The **flash** method stores an item in the session that will expire after the next request. It's useful for storing temporary data like status or error messages:
+
+	Session::flash('status', 'Welcome Back!');
+	
+Flash items that are expiring in subsequent requests can be retained for another request by using one of the **reflash** or **keep** methods:
+
+Retain all items for another request:
+
+	Session::reflash();
+	
+Retain an individual item for another request:
+	
+	Session::keep('status');
+	
+Retain several items for another request:
+	
+	Session::keep(array('status', 'other_item'));
+
 <a name="regeneration"></a>
 ## Regeneration
 

+ 20 - 1
laravel/documentation/validation.md

@@ -304,7 +304,26 @@ Once you have performed your validation, you need an easy way to get the errors
 
 Great! So, we have two simple registration routes. One to handle displaying the form, and one to handle the posting of the form. In the POST route, we run some validation over the input. If the validation fails, we redirect back to the registration form and flash the validation errors to the session so they will be available for us to display.
 
-**But, notice we are not explicitly binding the errors to the view in our GET route**. However, an errors variable will still be available in the view. Laravel intelligently determines if errors exist in the session, and if they do, binds them to the view for you. If no errors exist in the session, an empty message container will still be bound to the view. In your views, this allows you to always assume you have a message container available via the errors variable. We love making your life easier.
+**But, notice we are not explicitly binding the errors to the view in our GET route**. However, an errors variable ($errors) will still be available in the view. Laravel intelligently determines if errors exist in the session, and if they do, binds them to the view for you. If no errors exist in the session, an empty message container will still be bound to the view. In your views, this allows you to always assume you have a message container available via the errors variable. We love making your life easier.
+
+For example, if email address validation failed, we can look for 'email' within the $errors session var.
+
+	$errors->has('email')
+
+Using Blade, we can then conditionally add error messages to our view.
+
+	{{ $errors->has('email') ? 'Invalid Email Address' : 'Condition is false. Can be left blank' }}
+
+This will also work great when we need to conditionally add classes when using something like Twitter Bootstrap.
+For example, if the email address failed validation, we may want to add the "error" class from Bootstrap to our *div class="control-group"* statement.
+
+	<div class="control-group {{ $errors->has('email') ? 'error' : '' }}">
+	
+When the validation fails, our rendered view will have the appended *error* class.
+
+	<div class="control-group error">
+	
+
 
 <a name="custom-error-messages"></a>
 ## Custom Error Messages

+ 2 - 2
laravel/routing/router.php

@@ -75,7 +75,7 @@ class Router {
 	 */
 	public static $patterns = array(
 		'(:num)' => '([0-9]+)',
-		'(:any)' => '([a-zA-Z0-9\.\-_%]+)',
+		'(:any)' => '([a-zA-Z0-9\.\-_%=]+)',
 		'(:all)' => '(.*)',
 	);
 
@@ -86,7 +86,7 @@ class Router {
 	 */
 	public static $optional = array(
 		'/(:num?)' => '(?:/([0-9]+)',
-		'/(:any?)' => '(?:/([a-zA-Z0-9\.\-_%]+)',
+		'/(:any?)' => '(?:/([a-zA-Z0-9\.\-_%=]+)',
 		'/(:all?)' => '(?:/(.*)',
 	);
 

+ 1 - 1
paths.php

@@ -3,7 +3,7 @@
  * Laravel - A PHP Framework For Web Artisans
  *
  * @package  Laravel
- * @version  3.2.3
+ * @version  3.2.4
  * @author   Taylor Otwell <taylorotwell@gmail.com>
  * @link     http://laravel.com
  */

+ 1 - 1
public/index.php

@@ -3,7 +3,7 @@
  * Laravel - A PHP Framework For Web Artisans
  *
  * @package  Laravel
- * @version  3.2.3
+ * @version  3.2.4
  * @author   Taylor Otwell <taylorotwell@gmail.com>
  * @link     http://laravel.com
  */