Browse Source

added unless structure to blade.

Taylor Otwell 12 years ago
parent
commit
f7b1a72f3c
3 changed files with 40 additions and 0 deletions
  1. 26 0
      laravel/blade.php
  2. 1 0
      laravel/documentation/changes.md
  3. 13 0
      laravel/documentation/views/templating.md

+ 26 - 0
laravel/blade.php

@@ -16,6 +16,8 @@ class Blade {
 		'structure_openings',
 		'structure_openings',
 		'structure_closings',
 		'structure_closings',
 		'else',
 		'else',
+		'unless',
+		'endunless',
 		'includes',
 		'includes',
 		'render_each',
 		'render_each',
 		'render',
 		'render',
@@ -254,6 +256,30 @@ class Blade {
 		return preg_replace('/(\s*)@(else)(\s*)/', '$1<?php $2: ?>$3', $value);
 		return preg_replace('/(\s*)@(else)(\s*)/', '$1<?php $2: ?>$3', $value);
 	}
 	}
 
 
+	/**
+	 * Rewrites Blade "unless" statements into valid PHP.
+	 *
+	 * @param  string  $value
+	 * @return string
+	 */
+	protected static function compile_unless($value)
+	{
+		$pattern = '/(\s*)@unless(\s*\(.*\))/';
+
+		return preg_replace($pattern, '$1<?php if( ! ($2)): ?>', $value);
+	}
+
+	/**
+	 * Rewrites Blade "unless" endings into valid PHP.
+	 *
+	 * @param  string  $value
+	 * @return string
+	 */
+	protected static function compile_endunless($value)
+	{
+		return str_replace('@endunless', '<?php endif; ?>', $value);
+	}
+
 	/**
 	/**
 	 * Rewrites Blade @include statements into valid PHP.
 	 * Rewrites Blade @include statements into valid PHP.
 	 *
 	 *

+ 1 - 0
laravel/documentation/changes.md

@@ -28,6 +28,7 @@
 - [Added `$hidden` static variable to the base Eloquent model](/docs/database/eloquent#to-array).
 - [Added `$hidden` static variable to the base Eloquent model](/docs/database/eloquent#to-array).
 - [Added `sync` method to has\_many\_and\_belongs\_to Eloquent relationship](/docs/database/eloquent#sync-method).
 - [Added `sync` method to has\_many\_and\_belongs\_to Eloquent relationship](/docs/database/eloquent#sync-method).
 - [Added `save` method to has\_many Eloquent relationship](/docs/database/eloquent#has-many-save).
 - [Added `save` method to has\_many Eloquent relationship](/docs/database/eloquent#has-many-save).
+- [Added `unless` structure to Blade template engine](/docs/views/templating#blade-unless).
 - Migrated to the Symfony HttpFoundation component for core request / response handling.
 - Migrated to the Symfony HttpFoundation component for core request / response handling.
 - Fixed the passing of strings into the Input::except method.
 - Fixed the passing of strings into the Input::except method.
 - Fixed replacement of optional parameters in URL::transpose method.
 - Fixed replacement of optional parameters in URL::transpose method.

+ 13 - 0
laravel/documentation/views/templating.md

@@ -105,6 +105,19 @@ Blade makes writing your views pure bliss. To create a blade view, simply name y
 		There are not posts in the array!
 		There are not posts in the array!
 	@endforelse
 	@endforelse
 
 
+<a name="blade-unless"></a>
+#### The "unless" control structure:
+
+	@unless(Auth::check())
+		{{ HTML::link_to_route('login', 'Login'); }}
+	@endunless
+
+	// Equivalent...
+
+	<?php if ( ! Auth::check()): ?>
+		...
+	<?php endif; ?>
+
 <a name="blade-layouts"></a>
 <a name="blade-layouts"></a>
 ## Blade Layouts
 ## Blade Layouts