Yii Framework Forum: Konzeptionelle Umsetzung "tabs, Combi, Update" - Yii Framework Forum

Jump to content

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

Konzeptionelle Umsetzung "tabs, Combi, Update" Rate Topic: -----

#1 User is offline   beatcode 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 13-May 11
  • Location:Zürich

Posted 24 May 2013 - 01:41 AM

Hallo Zusammen

Könnt Ihr mir einen konzeptionellen Tipp geben wie man folgende Beschreibung richtig umsetzt? Mit einem textbasierten tipp wäre mir bereits geholfen.
Ich möchte das der Benutzer mit einem Kombinationsfeld ein Projekt auswählen kann. In Tabs sollen dann verschiedene Tabellen, welche alle einen Fremdschlüssel des ausgewählten Projekts beinhalten, zur weiteren Verarbeitung angeboten werden.
Wo rendere ich das Kombinationsfeld Formular? Im Controller? in der View?

Folgende Formulare habe ich erstellt:
  • "Show_Projekt" = Diese View wird Controller aufgerufen. Siehe Controllercode
  • "_FormCmbAuswahl" = Kombinationsfeld für die Auswahl des Projekt

Attached File  24-05-2013 07-38-57.png (26.73K)
Number of downloads: 13


Controller
 public function actionShow_Projekt() {

        if (Yii::app()->user->isGuest) {
            $this->fnc_ShowLogin();
        } else {
             $this->render('Show_Projekt'
            )); 
           
        }



Show_Projekt (View)

$modelProjekt = new Tbl_Projekt; 

 // Kombinationsfeld anzeigen
 $this->renderpartial('_FormCmbAuswahl' ,array('model1' => $modelProjekt));


$this->widget('zii.widgets.jui.CJuiTabs', array(
    'tabs' => array(
        'Projekt' => $this->renderPartial(''), true
  ),
    'options' => array(
        'collapsible' => false,
    ),
));



_FormCmbAuswahl
<?php

$form = $this->beginWidget('CActiveForm', array(
    'id' => 'project-form',
    'enableAjaxValidation' => true,
        ));
 
echo $form->dropDownList($model1, 'primary', CHtml::listData(Tbl_Projekt::model()->findAll(), 'primary', 'Projektname'), array('style' => 'width:150px;','submit'=>array('Tbl_Projekt/Show_Projekt', 'model1' => $model1))
);

$this->endWidget();
?>

0

#2 User is offline   SleepWalker 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 02-June 12
  • Location:Ukraine

Posted 25 May 2013 - 01:43 AM

Hallo, Beat

Du kannst in eine <Form> das Kombinationsfeld und Tabs mit Tabellen einbauen. Dann wird es kein Problem mit Fremdeschlüssel sein (du kannst Feldname verändern, falls Tbl_project[primary] gefällt dir nicht).
Ich würde alle zwei Views, dass du hier angezeigt hast, in ein View kombinieren (aber nur in Fall, wenn du `_FormCmbAuswahl` nicht irgendwo in andere View brauchst).
houath - simple integration with social network authorization on Yii
0

#3 User is offline   Da:Sourcerer 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,222
  • Joined: 30-March 11
  • Location:Berlin, Germany

Posted 25 May 2013 - 01:56 AM

View Postbeat78, on 24 May 2013 - 01:41 AM, said:

Wo rendere ich das Kombinationsfeld Formular? Im Controller? in der View?

Definitiv in der View. Rendering-Logik hat im Controller nichts verloren.

Ich bin mir nicht ganz sicher, was du mit den bearbeitbaren Fremdschlüsseln erzielen willst. Prinzipiell würde ich das aber so halten, dass nach der Auswahl eines Projektes ein Formular via Ajax nachgeladen wird, welches bereits vorgefüllt ist. Dazu bietet sich am ehesten eine weitere Action in deinem Controller an, die die ID des Projekts nimmt und das besagte Formular als partielle View bereitstellt.
programmer /ˈprəʊgramə/, noun: a device that converts ►coffee into ►code
0

#4 User is offline   beatcode 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 13-May 11
  • Location:Zürich

Posted 25 May 2013 - 11:04 AM

Hallo Zusammen

Wo oder wie sollte ich das ausgewählt Projekt am besten speichern? In der Session, in Globaler var, in einer Temp Tabelle?

Aktueller Ablauf:
actionTestform --> Kombinationsfeld wird angzeiegt --> submit bei Auswahl --> actionCmbAuswahl --> Kombinationsfeld + Tabs (Tab 1 = Updateformular) wird angzeigt --> Updateformular absenden --> Die $_POST[primary] vom Kombinationsfeld ist durch das erneute Laden des Formulars nicht mehr bekannt.


Controller

 public function actionTestform() {

        $this->render('_FormProjekt');
    }

    public function actionCmbAuswahl() {


        $SelectProjekt = $_POST['id'];    // <----- wo oder wie speichern?
 		$model = Tbl_Entwicklung::model()->FindByPk($SelectProjekt);

        if (isset($_POST['Tbl_Entwicklung'])) {

            // Aktualisieren
            $this->Actionupdate($SelectProjekt);
        }

        $this->render('testform', array('model' => $model));
    }




_FormProjekt

<br><br> <?php

// Projekt auswählen
$model1 = new Tbl_Entwicklung;

$form = $this->beginWidget('CActiveForm', array(
    'id' => 'project-form',
    'enableAjaxValidation' => true,
        ));

echo $form->dropDownList($model1, 'primary', CHtml::listData(Tbl_Entwicklung::model()->findAll(), 'primary', 'Arbeitspaket'), array(
    'style' => 'width:150px;',
    'submit' => array('/Tbl_Entwicklung/CmbAuswahl'),
    'params' => array('id' => 'js: $(this).val()'))    // <---- anders machen?
);

$this->endWidget();
?>




testform

<br><br>
<?php
// Kombinationsfeld anzeigen
$this->renderpartial('_FormProjekt', true);


// Tabs erstellen
$this->widget('zii.widgets.jui.CJuiTabs', array(
    'tabs' => array(
   	'Projekt' => $this->renderPartial('update', array('model' => $model), true
        ),
        'Team ' => $this->renderPartial('/tbl_Team/admin', array('model' => Tbl_Team::model()->OffeneAnfragen()), TRUE
        ),
        'Nachrichten ' => $this->renderPartial('/tbl_Nachricht/admin', array('model' => Tbl_Nachricht::model()->Nachrichten()), TRUE
        ),
        'Arbeit' => array('content' => 'Content for tab 2', 'id' => 'tab2'),
    ),
    'options' => array(
        'collapsible' => false,
    ),
));


0

#5 User is offline   Da:Sourcerer 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 1,222
  • Joined: 30-March 11
  • Location:Berlin, Germany

Posted 25 May 2013 - 01:06 PM

Der Arbeitsablauf ist hier leider auch nicht ganz klar. Am ehesten wird aber wohl ein Hidden Field ausreichen, um die ID des Projekts weiterzureichen. Für eine längerfristige Speicherung (zum Beispiel weil der Nutzer in den Kontext eines bestimmten Projekts verbleibt), wird am ehesten die Session herhalten müssen. Globale Variablen und temporäre Tabellen wären in diesem Fall ein klares Antipattern.

Mal eine Frage: Hast du irgendwie einen Hintergrund in .NET? Deine Namensgebungen scheinen darauf hinzuweisen.
programmer /ˈprəʊgramə/, noun: a device that converts ►coffee into ►code
1

#6 User is offline   beatcode 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 13-May 11
  • Location:Zürich

Posted 25 May 2013 - 01:19 PM

Klappt bestens, vielen Dank.

        if (isset($_POST['id'])) {
       	Yii::app()->session['Projekt'] = $_POST['id'];
        }  
        
        $SelectProjekt = Yii::app()->session['Projekt'];


Zu meiner Herkunft: Ich komme aus der verpönten Welt des MSAccess VBA . Mein Weg ist noch sehr lang aber macht riesen Spass. Hier auch mal ein Danke für die super Unterstützung von uns Newbie.
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