Commit 78243fed authored by Taylor Otwell's avatar Taylor Otwell

Merge branch 'develop' of github.com:laravel/laravel into develop

parents ff94d166 eafb4bdf
<?php
return array(
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the pagination links. You're free to change them to anything you want.
| If you come up with something more exciting, let us know.
|
*/
'previous' => '← Назад',
'next' => 'Вперёд →',
);
\ No newline at end of file
<?php
return array(
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used
| by the validator class. Some of the rules contain multiple versions,
| such as the size (max, min, between) rules. These versions are used
| for different input types such as strings and files.
|
| These language lines may be easily changed to provide custom error
| messages in your application. Error messages for custom validation
| rules may also be added to this file.
|
*/
"accepted" => "Вы должны принять :attribute.",
"active_url" => "Поле :attribute должно быть полным URL.",
"after" => "Поле :attribute должно быть датой после :date.",
"alpha" => "Поле :attribute может содержать только буквы.",
"alpha_dash" => "Поле :attribute может содержать только буквы, цифры и тире.",
"alpha_num" => "Поле :attribute может содержать только буквы и цифры.",
"before" => "Поле :attribute должно быть датой перед :date.",
"between" => array(
"numeric" => "Поле :attribute должно быть между :min и :max.",
"file" => "Поле :attribute должно быть от :min до :max Килобайт.",
"string" => "Поле :attribute должно быть от :min до :max символов.",
),
"confirmed" => "Поле :attribute не совпадает с подтверждением.",
"different" => "Поля :attribute и :other должны различаться.",
"email" => "Поле :attribute имеет неверный формат.",
"exists" => "Выбранное значение для :attribute уже существует.",
"image" => "Поле :attribute должно быть картинкой.",
"in" => "Выбранное значение для :attribute не верно.",
"integer" => "Поле :attribute должно быть целым числом.",
"ip" => "Поле :attribute должно быть полным IP-адресом.",
"match" => "Поле :attribute имеет неверный формат.",
"max" => array(
"numeric" => "Поле :attribute должно быть меньше :max.",
"file" => "Поле :attribute должно быть меньше :max Килобайт.",
"string" => "Поле :attribute должно быть короче :max символов.",
),
"mimes" => "Поле :attribute должно быть файлом одного из типов: :values.",
"min" => array(
"numeric" => "Поле :attribute должно быть не менее :min.",
"file" => "Поле :attribute должно быть не менее :min Килобайт.",
"string" => "Поле :attribute должно быть не короче :min символов.",
),
"not_in" => "Выбранное значение для :attribute не верно.",
"numeric" => "Поле :attribute должно быть числом.",
"required" => "Поле :attribute обязательно для заполнения.",
"same" => "Значение :attribute должно совпадать с :other.",
"size" => array(
"numeric" => "Поле :attribute должно быть :size.",
"file" => "Поле :attribute должно быть :size Килобайт.",
"string" => "Поле :attribute должно быть длиной :size символов.",
),
"unique" => "Такое значение поля :attribute уже существует.",
"url" => "Поле :attribute имеет неверный формат.",
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute_rule" to name the lines. This helps keep your
| custom validation clean and tidy.
|
| So, say you want to use a custom validation message when validating that
| the "email" attribute is unique. Just add "email_unique" to this array
| with your custom message. The Validator will handle the rest!
|
*/
'custom' => array(),
/*
|--------------------------------------------------------------------------
| Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as "E-Mail Address" instead
| of "email". Your users will thank you.
|
| The Validator class will automatically search this array of lines it
| is attempting to replace the :attribute place-holder in messages.
| It's pretty slick. We think you'll like it.
|
*/
'attributes' => array(),
);
\ No newline at end of file
<!doctype html>
<html>
<head>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Error 404 - Not Found</title>
<style>
@import url(http://fonts.googleapis.com/css?family=Ubuntu);
body {
background: #eee;
color: #6d6d6d;
font: normal normal normal 14px/1.253 Ubuntu, sans-serif;
margin: 0 0 25px 0;
min-width: 800px;
padding: 0;
}
#main {
background-clip: padding-box;
background-color: #fff;
border:1px solid #ccc;
border-radius: 5px;
box-shadow: 0 0 10px #cdcdcd;
margin: 25px auto 0;
padding: 30px;
width: 700px;
position: relative;
}
#main h1 {
font-family: 'Ubuntu';
font-size: 38px;
letter-spacing: 2px;
margin: 0 0 10px 0;
padding: 0;
}
#main h2 {
color: #999;
font-size: 18px;
letter-spacing: 3px;
margin: 0 0 25px 0;
padding: 0 0 0 0;
<meta name="viewport" content="width=device-width">
<style type="text/css">
@import url(http://fonts.googleapis.com/css?family=Droid+Sans);
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }
audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; }
audio:not([controls]) { display: none; }
[hidden] { display: none; }
html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
html, button, input, select, textarea { font-family: sans-serif; color: #222; }
body { margin: 0; font-size: 1em; line-height: 1.4; }
::-moz-selection { background: #E37B52; color: #fff; text-shadow: none; }
::selection { background: #E37B52; color: #fff; text-shadow: none; }
a { color: #00e; }
a:visited { color: #551a8b; }
a:hover { color: #06e; }
a:focus { outline: thin dotted; }
a:hover, a:active { outline: 0; }
abbr[title] { border-bottom: 1px dotted; }
b, strong { font-weight: bold; }
blockquote { margin: 1em 40px; }
dfn { font-style: italic; }
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
ins { background: #ff9; color: #000; text-decoration: none; }
mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }
pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; }
pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
q { quotes: none; }
q:before, q:after { content: ""; content: none; }
small { font-size: 85%; }
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
sup { top: -0.5em; }
sub { bottom: -0.25em; }
ul, ol { margin: 1em 0; padding: 0 0 0 40px; }
dd { margin: 0 0 0 40px; }
nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; }
img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }
svg:not(:root) { overflow: hidden; }
figure { margin: 0; }
form { margin: 0; }
fieldset { border: 0; margin: 0; padding: 0; }
label { cursor: pointer; }
legend { border: 0; *margin-left: -7px; padding: 0; white-space: normal; }
button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; }
button, input { line-height: normal; }
button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; *overflow: visible; }
button[disabled], input[disabled] { cursor: default; }
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; *width: 13px; *height: 13px; }
input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; }
input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
textarea { overflow: auto; vertical-align: top; resize: vertical; }
input:valid, textarea:valid { }
input:invalid, textarea:invalid { background-color: #f0dddd; }
table { border-collapse: collapse; border-spacing: 0; }
td { vertical-align: top; }
body
{
font-family:'Droid Sans', sans-serif;
font-size:10pt;
color:#555;
line-height: 25px;
}
#main h3 {
color: #999;
margin-top: 24px;
padding: 0 0 0 0;
.wrapper
{
width:760px;
margin:0 auto 5em auto;
}
#main h3 {
font-size: 18px;
.main
{
overflow:hidden;
}
#main p {
line-height: 25px;
margin: 10px 0;
.error-spacer
{
height:4em;
}
#main pre {
background-color: #333;
border-left: 1px solid #d8d8d8;
border-top: 1px solid #d8d8d8;
border-radius: 5px;
color: #eee;
padding: 10px;
a, a:visited
{
color:#2972A3;
}
#main ul {
margin: 10px 0;
padding: 0 30px;
}
#main li {
margin: 5px 0;
a:hover
{
color:#72ADD4;
}
</style>
</head>
<body>
<div id="main">
</head>
<body onload="prettyPrint()">
<div class="wrapper">
<div class="error-spacer"></div>
<div role="main" class="main">
<?php $messages = array('We need a map.', 'I think we\'re lost.', 'We took a wrong turn.'); ?>
<h1><?php echo $messages[mt_rand(0, 2)]; ?></h1>
<h2>Server Error: 404 (Not Found)</h2>
<hr>
<h3>What does this mean?</h3>
<p>
......@@ -99,5 +120,6 @@
Perhaps you would like to go to our <?php echo HTML::link('/', 'home page'); ?>?
</p>
</div>
</body>
</div>
</body>
</html>
\ No newline at end of file
<!doctype html>
<html>
<head>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Error 500 - Internal Server Error</title>
<style>
@import url(http://fonts.googleapis.com/css?family=Ubuntu);
body {
background: #eee;
color: #6d6d6d;
font: normal normal normal 14px/1.253 Ubuntu, sans-serif;
margin: 0 0 25px 0;
min-width: 800px;
padding: 0;
}
#main {
background-clip: padding-box;
background-color: #fff;
border:1px solid #ccc;
border-radius: 5px;
box-shadow: 0 0 10px #cdcdcd;
margin: 25px auto 0;
padding: 30px;
width: 700px;
position: relative;
}
#main h1 {
font-family: 'Ubuntu';
font-size: 38px;
letter-spacing: 2px;
margin: 0 0 10px 0;
padding: 0;
}
#main h2 {
color: #999;
font-size: 18px;
letter-spacing: 3px;
margin: 0 0 25px 0;
padding: 0 0 0 0;
<meta name="viewport" content="width=device-width">
<style type="text/css">
@import url(http://fonts.googleapis.com/css?family=Droid+Sans);
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; }
audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; }
audio:not([controls]) { display: none; }
[hidden] { display: none; }
html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; }
html, button, input, select, textarea { font-family: sans-serif; color: #222; }
body { margin: 0; font-size: 1em; line-height: 1.4; }
::-moz-selection { background: #E37B52; color: #fff; text-shadow: none; }
::selection { background: #E37B52; color: #fff; text-shadow: none; }
a { color: #00e; }
a:visited { color: #551a8b; }
a:hover { color: #06e; }
a:focus { outline: thin dotted; }
a:hover, a:active { outline: 0; }
abbr[title] { border-bottom: 1px dotted; }
b, strong { font-weight: bold; }
blockquote { margin: 1em 40px; }
dfn { font-style: italic; }
hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; }
ins { background: #ff9; color: #000; text-decoration: none; }
mark { background: #ff0; color: #000; font-style: italic; font-weight: bold; }
pre, code, kbd, samp { font-family: monospace, serif; _font-family: 'courier new', monospace; font-size: 1em; }
pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; }
q { quotes: none; }
q:before, q:after { content: ""; content: none; }
small { font-size: 85%; }
sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; }
sup { top: -0.5em; }
sub { bottom: -0.25em; }
ul, ol { margin: 1em 0; padding: 0 0 0 40px; }
dd { margin: 0 0 0 40px; }
nav ul, nav ol { list-style: none; list-style-image: none; margin: 0; padding: 0; }
img { border: 0; -ms-interpolation-mode: bicubic; vertical-align: middle; }
svg:not(:root) { overflow: hidden; }
figure { margin: 0; }
form { margin: 0; }
fieldset { border: 0; margin: 0; padding: 0; }
label { cursor: pointer; }
legend { border: 0; *margin-left: -7px; padding: 0; white-space: normal; }
button, input, select, textarea { font-size: 100%; margin: 0; vertical-align: baseline; *vertical-align: middle; }
button, input { line-height: normal; }
button, input[type="button"], input[type="reset"], input[type="submit"] { cursor: pointer; -webkit-appearance: button; *overflow: visible; }
button[disabled], input[disabled] { cursor: default; }
input[type="checkbox"], input[type="radio"] { box-sizing: border-box; padding: 0; *width: 13px; *height: 13px; }
input[type="search"] { -webkit-appearance: textfield; -moz-box-sizing: content-box; -webkit-box-sizing: content-box; box-sizing: content-box; }
input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; }
textarea { overflow: auto; vertical-align: top; resize: vertical; }
input:valid, textarea:valid { }
input:invalid, textarea:invalid { background-color: #f0dddd; }
table { border-collapse: collapse; border-spacing: 0; }
td { vertical-align: top; }
body
{
font-family:'Droid Sans', sans-serif;
font-size:10pt;
color:#555;
line-height: 25px;
}
#main h3 {
color: #999;
margin-top: 24px;
padding: 0 0 0 0;
.wrapper
{
width:760px;
margin:0 auto 5em auto;
}
#main h3 {
font-size: 18px;
.main
{
overflow:hidden;
}
#main p {
line-height: 25px;
margin: 10px 0;
.error-spacer
{
height:4em;
}
#main pre {
background-color: #333;
border-left: 1px solid #d8d8d8;
border-top: 1px solid #d8d8d8;
border-radius: 5px;
color: #eee;
padding: 10px;
a, a:visited
{
color:#2972A3;
}
#main ul {
margin: 10px 0;
padding: 0 30px;
}
#main li {
margin: 5px 0;
a:hover
{
color:#72ADD4;
}
</style>
</head>
<body>
<div id="main">
</head>
<body onload="prettyPrint()">
<div class="wrapper">
<div class="error-spacer"></div>
<div role="main" class="main">
<?php $messages = array('Ouch.', 'Oh no!', 'Whoops!'); ?>
<h1><?php echo $messages[mt_rand(0, 2)]; ?></h1>
<h2>Server Error: 500 (Internal Server Error)</h2>
<hr>
<h3>What does this mean?</h3>
<p>
......@@ -99,5 +120,6 @@
Perhaps you would like to go to our <?php echo HTML::link('/', 'home page'); ?>?
</p>
</div>
</body>
</div>
</body>
</html>
\ No newline at end of file
<?php namespace Laravel\Cache\Drivers; use Memcache;
<?php namespace Laravel\Cache\Drivers;
class Memcached extends Driver {
/**
* The Memcache instance.
*
* @var Memcache
* @var Memcached
*/
protected $memcache;
......@@ -19,10 +19,10 @@ class Memcached extends Driver {
/**
* Create a new Memcached cache driver instance.
*
* @param Memcache $memcache
* @param Memcached $memcache
* @return void
*/
public function __construct(Memcache $memcache, $key)
public function __construct(\Memcached $memcache, $key)
{
$this->key = $key;
$this->memcache = $memcache;
......@@ -68,7 +68,7 @@ class Memcached extends Driver {
*/
public function put($key, $value, $minutes)
{
$this->memcache->set($this->key.$key, $value, 0, $minutes * 60);
$this->memcache->set($this->key.$key, $value, $minutes * 60);
}
/**
......
......@@ -33,6 +33,8 @@
- [Added `unless` structure to Blade template engine](/docs/views/templating#blade-unless).
- [Added Blade comments](/docs/views/templating#blade-comments).
- [Added simpler environment management](/docs/install#environments).
- Added `View::exists` method.
- Use [Memcached](http://php.net/manual/en/book.memcached.php) API instead of older [Memcache](http://php.net/manual/en/book.memcache.php) API.
- Added support for bundles outside of the bundle directory.
- Added support for DateTime database query bindings.
- Migrated to the Symfony HttpFoundation component for core request / response handling.
......
......@@ -39,6 +39,10 @@ All views are stored within the **application/views** directory and use the PHP
return View::make('home.index');
});
#### Determining if a view exists:
$exists = View::exists('home.index');
Sometimes you will need a little more control over the response sent to the browser. For example, you may need to set a custom header on the response, or change the HTTP status code. Here's how:
#### Returning a custom response:
......
......@@ -5,7 +5,7 @@ class Memcached {
/**
* The Memcached connection instance.
*
* @var Memcache
* @var Memcached
*/
protected static $connection;
......@@ -40,11 +40,11 @@ class Memcached {
*/
protected static function connect($servers)
{
$memcache = new \Memcache;
$memcache = new \Memcached;
foreach ($servers as $server)
{
$memcache->addServer($server['host'], $server['port'], true, $server['weight']);
$memcache->addServer($server['host'], $server['port'], $server['weight']);
}
if ($memcache->getVersion() === false)
......
......@@ -110,12 +110,13 @@ class View implements ArrayAccess {
}
/**
* Get the path to a given view on disk.
* Determine if the given view exists.
*
* @param string $view
* @return string
* @param boolean $return_path
* @return string|bool
*/
protected function path($view)
public static function exists($view, $return_path = false)
{
list($bundle, $view) = Bundle::parse($view);
......@@ -127,6 +128,22 @@ class View implements ArrayAccess {
$path = Event::first(static::loader, array($bundle, $view));
if ( ! is_null($path))
{
return $return_path ? $path : true;
}
return false;
}
/**
* Get the path to a given view on disk.
*
* @param string $view
* @return string
*/
protected function path($view)
{
if ($path = $this->exists($view,true))
{
return $path;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment