Mam dane użytkowników które wyświetlają się, gdy wchodzę do widoku (view). I w tym widoku chciałbym umożliwić użytkownikowi usunięcie dodatkowych danych z innego modelu(z drugiej tabeli z kluczem obcym). Zrobiłem więc funkcję find, która pobiera od id użytkownika i na tej podstawie szuka w tabeli jego dodatkowe dane(które chce usunąć) i przekazuję to do widoku. Zrobiłem w kontrolerze takie akcje:
public function actionView($id) {
return $this->render('view', [
'model' => $this->findModel($id),
'userDate'=>$this->findData($id)
]);
}
public function actionDelet($id) {
$this->findData($id)->delete();
return $this->redirect(['index']);
}
public function findData($id){
if (($model = Profile::findOne($id)) !== null) {
$id=$model->Rel_RoyalUserData;
$user = UrRoyalUserData::find()->where(['Id' => $id])->one();
return $user;
} else {
throw new NotFoundHttpException('The requested page does not st.');
}
}
I w widoku wyświetlam dane użytkownika i dodatkowo stawiłem przycisk do usuwania tych dodatkowych danych:
<?php
use yii\helpers\Html;
use yii\widgets\DetailView;
/* @var $this yii\web\View */
/* @var $model frontend\modules\settings\models\Profile */
$this->title = $model->Name;
$this->params['breadcrumbs'][] = ['label' => 'Profiles', 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="profile-view">
<h1><?= Html::encode($this->title) ?></h1>
<p>
<?= Html::a('Update', ['update', 'id' => $model->Id], ['class' => 'btn btn-primary']) ?>
<?= Html::a('Delete', ['delete', 'id' => $model->Id], [
'class' => 'btn btn-danger',
'data' => [
'confirm' => 'Are you sure you want to delete this item?',
'method' => 'post',
],
]) ?>
</p>
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'Id',
'Name',
'Surname',
],
]) ?>
<p>
<?= Html::a('Update', ['update', 'id' => $userDate->Id], ['class' => 'btn btn-primary']) ?>
<?= Html::a('Delete', ['delet', 'id' => $userDate->Id], [
'class' => 'btn btn-danger',
'data' => [
'confirm' => 'Are you sure you want to delete this item?',
'method' => 'post',
],
]) ?>
</p>
</div>
Jednak po kliknięciu delete mam :Not Found (#404)
The requested page does not st.
Akcja nazywa się Delet, ponieważ w kontrolerze mam jeszczę inna akcję delete do usuwania tego usera.
Chociaż te dodatkowe dane pobierają się dobrze bo sprawdzałęm var_dumpem, że jest to akurat to id i ten obiekt. A error pochodzi z funkcji find która napisałem. Ktoś widzi gdzie zrobiłem bład?