Yii2 dev digest #2 Dec'13
Dec 4, 2013, 11:43:48 PMIt has gone some time after Yii2 Alpha announce, it increased activity in GitHub issues, a lot more people have tried to touch Yii2. And this is what I have noted.
- Extracted ActiveRecord Interface and BaseAR #886 #1359
- Extracted Active Relation feature
- Refatored StringHelper and FileHelper methods
- Eager loading, Active Record relation and asArray()
$drivers = Driver::find()->with('cars')->asArray()->all();
will get populated nested arrays with releations
- Configurable wrappers for checkbox and radio in BaseHtml
- DB Schema OCI [WIP]
- Elasticsearch debug toolbar; Screenshot
- Also added EmailTarget to log emails
- Support for Redis Sentinel planned for 2.0 RC
- Twitter Bootstrap Html helper moved to separate non-official extension
- There will no be PageState in Yii2
- Added SqlDataProvider
$count = Yii::$app->db->createCommand('
SELECT COUNT(*) FROM tbl_user WHERE status=:status
', [':status' => 1])->queryScalar();
$dataProvider = new SqlDataProvider([
'sql' => 'SELECT * FROM tbl_user WHERE status=:status',
'params' => [':status' => 1],
'totalCount' => $count,
'sort' => [
'attributes' => [
'age',
'name' => [
'asc' => ['first_name' => SORT_ASC, 'last_name' => SORT_ASC],
'desc' => ['first_name' => SORT_DESC, 'last_name' => SORT_DESC],
'default' => SORT_DESC,
'label' => 'Name',
],
],
],
'pagination' => [
'pageSize' => 20,
],
]);
Yii2 Hints
ActiveRecord::find($primaryKey)->asArray() code drops error
Correct way
MyActiveRecord::find()->where(['id' => $primaryKey])->asArray()->one();
Support for HTML 5 Input Types
qiangxue > We will not add these input types to Html. You can easily use
Html::input($type, $name, $value)
to achieve these.Reuse of Query object
qiangxue > No, you cannot reuse the same query object for different queries. You need to create a new instance for each query.
Parsing an URL as a simple string
klimov-paul > It is better to create new Request instance and fill it up via “setter” methods. In simplest case “setUrl” should be enough:
use yii\web\Request;
$request = new Request();
$request->setUrl('/site/contact');
Yii::$app->urlManager->parseRequest($request);
Yii::$app->mail->compose('contact/html')
->setFrom('from@domain.com')
->setTo($form->email)
->setSubject($form->subject)
->send();
- Dashes in table field names, If you have a table where the field name contains dashes, Gii will generate variables with dashes.
kartik-v > I think Yii proposes this to be handled by adhering to Naming Conventions for database fields