Der folgende Code sollte nach Datensätzen suchen. Aber was auch immer ich auf, else-Zweig in Code wirdRadioList scheint nicht gerendert zu werden
verarbeitet<?=$form->field($model, 'choice_date')->radioList(array(0=>'Before',1=>'After'))->label('Please, choose Datesearching!'); ?>
Modell:
<?php
namespace backend\models;
use Yii;
use yii\base\Model;
class RadioForm extends Model { // A new Class programmed by Thomas Kipp
public $choice_date;
public function rules() {
return [
['choice_date', 'boolean'],
];
}
}
?>
Searching-Klasse:
<?php
namespace backend\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use backend\models\Departments;
class DepartmentsSearch extends Departments {
public function rules() {
return [
[['department_id'], 'integer'],
[['department_name', 'department_created_date', 'department_status', 'companies_company_id', 'branches_branch_id'], 'safe'],
];
}
public function scenarios() {
return Model::scenarios();
}
public function search($params) {
$query = Departments::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$this->load($params);
if (!$this->validate()) return $dataProvider;
$model = new RadioForm();
$model->load($params);
if ($model->choice_date == true)
$query->andFilterWhere(['<', 'department_created_date', $this->department_created_date]);
else
$query->andFilterWhere(['>', 'department_created_date', $this->department_created_date]);
$query->joinWith('companiesCompany');
$query->joinWith('branchesBranch');
$query->andFilterWhere(['like', 'department_name', $this->department_name])
->andFilterWhere(['like', 'companies.company_name', $this->companies_company_id])
->andFilterWhere(['like', 'branches.branch_name', $this->branches_branch_id])
->andFilterWhere(['like', 'department_status', $this->department_status]);
return $dataProvider;
}
}
P. S .: Ich bin nur in der Lage Datum-Filterung zu ändern Eigenschaft wahr/falsch, beispielsweise wie folgt zu beeinflussen:
public $choice_date=true;
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Irgendwelche Ideen, wie man das Problem lösen?
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sie sagen, dass 'if ($ model-> choice_date == 0)' immer falsch ist? –
Genau. Dieser Teil wird niemals TRUE, daher wird das Datum immer für größere wie gefiltert! Ich kann nur die Filterung im Modell beeinflussen, nicht vom Benutzer. Also ich meine, Eigenschaft wird nicht gerendert – tklustig
Das ist seltsam, weil von Ihrem Code dieser Teil immer 'true' zurückgeben sollte, unabhängig von der gewählten Option. –