Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
b71e8301
Commit
b71e8301
authored
Mar 14, 2013
by
Qiang Xue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ActiveForm WIP
parent
c69e6180
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
114 additions
and
72 deletions
+114
-72
Model.php
framework/base/Model.php
+20
-20
Html.php
framework/util/Html.php
+23
-23
ActiveForm.php
framework/widgets/ActiveForm.php
+71
-29
No files found.
framework/base/Model.php
View file @
b71e8301
...
...
@@ -420,12 +420,31 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
}
/**
* Returns the first error of every attribute in the model.
* @return array the first errors. An empty array will be returned if there is no error.
*/
public
function
getFirstErrors
()
{
if
(
empty
(
$this
->
_errors
))
{
return
array
();
}
else
{
$errors
=
array
();
foreach
(
$this
->
_errors
as
$errors
)
{
if
(
isset
(
$errors
[
0
]))
{
$errors
[]
=
$errors
[
0
];
}
}
}
return
$errors
;
}
/**
* Returns the first error of the specified attribute.
* @param string $attribute attribute name.
* @return string the error message. Null is returned if no error.
* @see getErrors
*/
public
function
getError
(
$attribute
)
public
function
get
First
Error
(
$attribute
)
{
return
isset
(
$this
->
_errors
[
$attribute
])
?
reset
(
$this
->
_errors
[
$attribute
])
:
null
;
}
...
...
@@ -441,25 +460,6 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
}
/**
* Adds a list of errors.
* @param array $errors a list of errors. The array keys must be attribute names.
* The array values should be error messages. If an attribute has multiple errors,
* these errors must be given in terms of an array.
*/
public
function
addErrors
(
$errors
)
{
foreach
(
$errors
as
$attribute
=>
$error
)
{
if
(
is_array
(
$error
))
{
foreach
(
$error
as
$e
)
{
$this
->
_errors
[
$attribute
][]
=
$e
;
}
}
else
{
$this
->
_errors
[
$attribute
][]
=
$error
;
}
}
}
/**
* Removes errors for all attributes or a single attribute.
* @param string $attribute attribute name. Use null to remove errors for all attribute.
*/
...
...
framework/util/Html.php
View file @
b71e8301
...
...
@@ -152,7 +152,7 @@ class Html
* @param string $name the tag name
* @param string $content the content to be enclosed between the start and end tags. It will not be HTML-encoded.
* If this is coming from end users, you should consider [[encode()]] it to prevent XSS attacks.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated HTML tag
...
...
@@ -172,7 +172,7 @@ class Html
/**
* Generates a start tag.
* @param string $name the tag name
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated start tag
...
...
@@ -209,7 +209,7 @@ class Html
/**
* Generates a style tag.
* @param string $content the style content
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* If the options does not contain "type", a "type" attribute with value "text/css" will be used.
...
...
@@ -226,7 +226,7 @@ class Html
/**
* Generates a script tag.
* @param string $content the script content
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* If the options does not contain "type", a "type" attribute with value "text/javascript" will be rendered.
...
...
@@ -243,7 +243,7 @@ class Html
/**
* Generates a link tag that refers to an external CSS file.
* @param array|string $url the URL of the external CSS file. This parameter will be processed by [[url()]].
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated link tag
...
...
@@ -260,7 +260,7 @@ class Html
/**
* Generates a script tag that refers to an external JavaScript file.
* @param string $url the URL of the external JavaScript file. This parameter will be processed by [[url()]].
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated script tag
...
...
@@ -276,8 +276,8 @@ class Html
/**
* Generates a form start tag.
* @param array|string $action the form action URL. This parameter will be processed by [[url()]].
* @param string $method
form
method, either "post" or "get" (case-insensitive)
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param string $method
the form submission
method, either "post" or "get" (case-insensitive)
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated form start tag.
...
...
@@ -329,7 +329,7 @@ class Html
* @param array|string|null $url the URL for the hyperlink tag. This parameter will be processed by [[url()]]
* and will be used for the "href" attribute of the tag. If this parameter is null, the "href" attribute
* will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated hyperlink
...
...
@@ -350,7 +350,7 @@ class Html
* it to prevent XSS attacks.
* @param string $email email address. If this is null, the first parameter (link body) will be treated
* as the email address and used.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated mailto link
...
...
@@ -363,7 +363,7 @@ class Html
/**
* Generates an image tag.
* @param string $src the image URL. This parameter will be processed by [[url()]].
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated image tag
...
...
@@ -384,7 +384,7 @@ class Html
* it to prevent XSS attacks.
* @param string $for the ID of the HTML element that this label is associated with.
* If this is null, the "for" attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated label tag
...
...
@@ -402,7 +402,7 @@ class Html
* @param string $content the content enclosed within the button tag. It will NOT be HTML-encoded.
* Therefore you can pass in HTML code such as an image tag. If this is is coming from end users,
* you should consider [[encode()]] it to prevent XSS attacks.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* If the options does not contain "type", a "type" attribute with value "button" will be rendered.
...
...
@@ -425,7 +425,7 @@ class Html
* @param string $content the content enclosed within the button tag. It will NOT be HTML-encoded.
* Therefore you can pass in HTML code such as an image tag. If this is is coming from end users,
* you should consider [[encode()]] it to prevent XSS attacks.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated submit button tag
...
...
@@ -443,7 +443,7 @@ class Html
* @param string $content the content enclosed within the button tag. It will NOT be HTML-encoded.
* Therefore you can pass in HTML code such as an image tag. If this is is coming from end users,
* you should consider [[encode()]] it to prevent XSS attacks.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated reset button tag
...
...
@@ -459,7 +459,7 @@ class Html
* @param string $type the type attribute.
* @param string $name the name attribute. If it is null, the name attribute will not be generated.
* @param string $value the value attribute. If it is null, the value attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated input tag
...
...
@@ -476,7 +476,7 @@ class Html
* Generates an input button.
* @param string $name the name attribute.
* @param string $value the value attribute. If it is null, the value attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated button tag
...
...
@@ -490,7 +490,7 @@ class Html
* Generates a submit input button.
* @param string $name the name attribute. If it is null, the name attribute will not be generated.
* @param string $value the value attribute. If it is null, the value attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated button tag
...
...
@@ -517,7 +517,7 @@ class Html
* Generates a text input field.
* @param string $name the name attribute.
* @param string $value the value attribute. If it is null, the value attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated button tag
...
...
@@ -531,7 +531,7 @@ class Html
* Generates a hidden input field.
* @param string $name the name attribute.
* @param string $value the value attribute. If it is null, the value attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated button tag
...
...
@@ -545,7 +545,7 @@ class Html
* Generates a password input field.
* @param string $name the name attribute.
* @param string $value the value attribute. If it is null, the value attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated button tag
...
...
@@ -562,7 +562,7 @@ class Html
* can be obtained via $_FILES[$name] (see PHP documentation).
* @param string $name the name attribute.
* @param string $value the value attribute. If it is null, the value attribute will not be generated.
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated button tag
...
...
@@ -576,7 +576,7 @@ class Html
* Generates a text area input.
* @param string $name the input name
* @param string $value the input value. Note that it will be encoded using [[encode()]].
* @param array $options the tag options in terms of name-value pairs. These be rendered as
* @param array $options the tag options in terms of name-value pairs. These
will
be rendered as
* the attributes of the resulting tag. The values will be HTML-encoded using [[encode()]].
* If a value is null, the corresponding attribute will not be rendered.
* @return string the generated text area tag
...
...
framework/widgets/ActiveForm.php
View file @
b71e8301
...
...
@@ -7,7 +7,11 @@
namespace
yii\widgets
;
use
Yii
;
use
yii\base\Widget
;
use
yii\base\Model
;
use
yii\util\Html
;
use
yii\util\ArrayHelper
;
/**
* ActiveForm ...
...
...
@@ -18,8 +22,7 @@ use yii\base\Widget;
class
ActiveForm
extends
Widget
{
/**
* @var mixed the form action URL (see {@link CHtml::normalizeUrl} for details about this parameter).
* If not set, the current page URL is used.
* @param array|string $action the form action URL. This parameter will be processed by [[\yii\util\Html::url()]].
*/
public
$action
=
''
;
/**
...
...
@@ -28,49 +31,88 @@ class ActiveForm extends Widget
*/
public
$method
=
'post'
;
/**
* @var string the
CSS class name for error messages. Defaults to 'errorMessage'
.
*
Individual {@link error} call may override this value by specifying the 'class' HTML option.
* @var string the
default CSS class for the error summary container
.
*
@see errorSummary()
*/
public
$error
MessageCssClass
=
'errorMessage
'
;
public
$error
SummaryClass
=
'yii-error-summary
'
;
/**
* @var array additional HTML attributes that should be rendered for the form tag.
* @var string the default CSS class that indicates an input has error.
* This is
*/
public
$htmlOptions
=
array
();
/**
* @var boolean whether to enable data validation via AJAX. Defaults to false.
* When this property is set true, you should respond to the AJAX validation request on the server side as shown below:
* <pre>
* public function actionCreate()
* {
* $model=new User;
* if(isset($_POST['ajax']) && $_POST['ajax']==='user-form')
* {
* echo CActiveForm::validate($model);
* Yii::app()->end();
* }
* ......
* }
* </pre>
*/
public
$enableAjaxValidation
=
false
;
public
$errorClass
=
'yii-error'
;
public
$successClass
=
'yii-success'
;
public
$validatingClass
=
'yii-validating'
;
/**
* @var boolean whether to enable client-side data validation. Defaults to false.
*
* When this property is set true, client-side validation will be performed by validators
* that support it (see {@link CValidator::enableClientValidation} and {@link CValidator::clientValidateAttribute}).
*
* @see error
* @since 1.1.7
*/
public
$enableClientValidation
=
false
;
public
$options
=
array
();
public
function
errorSummary
(
$model
,
$options
=
array
())
/**
* @param Model|Model[] $models
* @param array $options
* @return string
*/
public
function
errorSummary
(
$models
,
$options
=
array
())
{
if
(
!
is_array
(
$models
))
{
$models
=
array
(
$models
);
}
$showAll
=
isset
(
$options
[
'showAll'
])
&&
$options
[
'showAll'
]);
$lines
=
array
();
/** @var $model Model */
foreach
(
$models
as
$model
)
{
if
(
$showAll
)
{
foreach
(
$model
->
getErrors
()
as
$errors
)
{
$lines
=
array_merge
(
$lines
,
$errors
);
}
}
else
{
$lines
=
array_merge
(
$lines
,
$model
->
getFirstErrors
());
}
}
$header
=
isset
(
$options
[
'header'
])
?
$options
[
'header'
]
:
'<p>'
.
Yii
::
t
(
'yii|Please fix the following errors:'
)
.
'</p>'
;
$footer
=
isset
(
$options
[
'footer'
])
?
$options
[
'footer'
]
:
''
;
$container
=
isset
(
$options
[
'container'
])
?
$options
[
'container'
]
:
'div'
;
unset
(
$options
[
'showAll'
],
$options
[
'header'
],
$options
[
'footer'
],
$options
[
'container'
]);
if
(
!
isset
(
$options
[
'class'
]))
{
$options
[
'class'
]
=
$this
->
errorSummaryClass
;
}
if
(
$lines
!==
array
())
{
$content
=
"<ul><li>"
.
implode
(
"</li>
\n
<li>"
,
ArrayHelper
::
htmlEncode
(
$lines
))
.
"</li><ul>"
;
return
Html
::
tag
(
$container
,
$header
.
$content
.
$footer
,
$options
);
}
else
{
$content
=
"<ul></ul>"
;
$options
[
'style'
]
=
isset
(
$options
[
'style'
])
?
rtrim
(
$options
[
'style'
],
';'
)
.
'; display:none'
:
'display:none'
;
return
Html
::
tag
(
$container
,
$header
.
$content
.
$footer
,
$options
);
}
}
/**
* @param Model $model
* @param string $attribute
* @param array $options
* @return string
*/
public
function
error
(
$model
,
$attribute
,
$options
=
array
())
{
self
::
resolveName
(
$model
,
$attribute
);
// turn [a][b]attr into attr
$container
=
isset
(
$options
[
'container'
])
?
$options
[
'container'
]
:
'div'
;
unset
(
$options
[
'container'
]);
$error
=
$model
->
getFirstError
(
$attribute
);
return
Html
::
tag
(
$container
,
Html
::
encode
(
$error
),
$options
);
}
public
function
resolveAttributeName
(
$name
)
{
}
public
function
label
(
$model
,
$attribute
,
$options
=
array
())
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment