Yii Framework Forum: Gii: Problem mit Db Tabellen die einen Unterstrich im Namen haben - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Gii: Problem mit Db Tabellen die einen Unterstrich im Namen haben Rate Topic: -----

#1 User is offline   DevTriangel 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 14-July 16

Posted 17 July 2016 - 10:32 AM

Hallo zusammen,
ich arbeite mich momentan in Yii2Advanced ein, bin also noch absoluter Anfänger.
Seit 3 Tagen habe ich ein Problem welches ich nicht gelöst bekomme.
Die Sufu habe ich auch schon benutzt nur leider nix passendes gefunden.
So folgendes ärgert mich:


Ich habe eine Tabelle in meiner Db mit dem Namen temp_times.
Wenn ich jetzt mit Gii den Model Generator verwende gebe ich folgende Eingabe an:
Table Name: temp_times
Model Class: TempTimes
Namespace: backend\models
Base Class: yii\db\ActiveRecord


Nachdem Preview wird dann die TempTimes.php generiert. Jetzt fuelle ich den CRUD Generator mit folgenden Angaben:
Model Class: backend\models\TempTimes
Search Model Class: backend\models\TempTimesSearch
Controller Class: backend\controllers\TempTimesController
View Path: @backend/views/TempTimes(hier ist der Fehler)


Normalerweise rufe ich nach dem generieren eine index View dann wie folgt auf:
localhost/test/backend/web/index.php?r=temptimes
allerdings wird mir hier immer eine #404 NOT FOUND geworfen (allerdings auch nur wenn der Tabellenname in der DB einen unterstrich enthält). Ist es ein normaler Name ohne Unterstrich wie zB. times, kann ich die index nach dem MODEL und CRUD generieren mittels:
localhost/test/backend/web/index.php?r=times aufrufen.


Hier also meine Frage, wie wird der Unterstrich in einem Tabellennamen einer Datenbank von Gii verarbeitet bzw. wie rufe ich dann eine erstellte index-view auf?


Danke im voraus, viele Grüße..
0

#2 User is offline   Patrick Jones 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 495
  • Joined: 14-July 12
  • Location:Berlin

Posted 17 July 2016 - 12:05 PM

Versuch's mal mit

localhost/test/backend/web/index.php?r=temp-times
Freelance developer for hire - send me a message!
0

#3 User is offline   DevTriangel 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 14-July 16

Posted 17 July 2016 - 01:10 PM

Hallo, danke für die schnelle Antwort.
Den Namen mit einem Bindestrich trennen habe ich auch schon getestet, leider funktioniert es nicht.
Versuche ich die Seite mit dem Bindestrich anzusprechen bekomme ich folgenden Fehler:

Invalid Parameter – yii\base\InvalidParamException
The view file does not exist: C:\xampp\htdocs\test\backend\views\temp-times\index.php

CamelCase habe ich auch schon getestet
(test\backend\views\tempTimes\index.php sowie test\backend\views\Temptimes\index.php), da bekam ich auch die #404 Not Found
0

#4 User is offline   Patrick Jones 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 495
  • Joined: 14-July 12
  • Location:Berlin

Posted 17 July 2016 - 02:01 PM

Damit bist du ja schonmal einen Schritt weiter.

404 heißt, Controller/Action wurde nicht gefunden.

"View file does not exists" heißt, Yii hat die passende Action gefunden, konnte den View aber nicht rendern.

Wie sieht dein Controller aus?
Freelance developer for hire - send me a message!
0

#5 User is offline   DevTriangel 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 14-July 16

Posted 17 July 2016 - 02:11 PM

Ist der ganz normale Controller der von Gii erzeugt wird:

<?php

namespace backend\controllers;

use Yii;
use backend\models\TempTimes;
use backend\models\TempTimesSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;

/**
 * TempTimesController implements the CRUD actions for TempTimes model.
 */
class TempTimesController extends Controller
{
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['POST'],
                ],
            ],
        ];
    }

    /**
     * Lists all TempTimes models.
     * @return mixed
     */
    public function actionIndex()
    {
        $searchModel = new TempTimesSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

    /**
     * Displays a single TempTimes model.
     * @param integer $id
     * @return mixed
     */
    public function actionView($id)
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
        ]);
    }

    /**
     * Creates a new TempTimes model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     * @return mixed
     */
    public function actionCreate()
    {
        $model = new TempTimes();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->temp_id]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

    /**
     * Updates an existing TempTimes model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id
     * @return mixed
     */
    public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->temp_id]);
        } else {
            return $this->render('update', [
                'model' => $model,
            ]);
        }
    }

    /**
     * Deletes an existing TempTimes model.
     * If deletion is successful, the browser will be redirected to the 'index' page.
     * @param integer $id
     * @return mixed
     */
    public function actionDelete($id)
    {
        $this->findModel($id)->delete();

        return $this->redirect(['index']);
    }

    /**
     * Finds the TempTimes model based on its primary key value.
     * If the model is not found, a 404 HTTP exception will be thrown.
     * @param integer $id
     * @return TempTimes the loaded model
     * @throws NotFoundHttpException if the model cannot be found
     */
    protected function findModel($id)
    {
        if (($model = TempTimes::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested page does not exist.');
        }
    }
}

0

#6 User is offline   Patrick Jones 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 495
  • Joined: 14-July 12
  • Location:Berlin

Posted 17 July 2016 - 02:58 PM

Dann müsste dein View-Path "temp-times" heißen:

View Path: @backend/views/temp-times
Freelance developer for hire - send me a message!
0

#7 User is offline   DevTriangel 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 4
  • Joined: 14-July 16

Posted 18 July 2016 - 02:19 AM

Hallo,
so danke dir :) :) dein folgender Hinweis ist die richtige Lösung gewesen.

Quote

Dann müsste dein View-Path "temp-times" heißen:

View Path: @backend/views/temp-times


Habe den Fehler direkt markiert im ersten Post, und hier nochmal die komplette Lösung:

im Gii CRUD Generator:
Model Class: backend\models\TempTimes
Search Model Class: backend\models\TempTimesSearch
Controller Class: backend\controllers\TempTimesController
View Path: @backend/views/temp-times

nach dem generieren ist die view dann ansprechbar über:

localhost/test/backend/web/index.php?r=temp-times
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users