Domanda

Per quanto riguarda le migliori pratiche Go è presente consigliata? Ho un regolatore di commenti + modello che deve essere chiamato in un controller elementi e profili. Il controller commenti carica automaticamente il modello di commenti.

E 'accettabile per chiamare il controllore commenti direttamente dal controller oggetti e profilo, o è il modo "best practice" per richiamare il modello di commenti, invece?

Lo chiedo perché in Kohana, la vista non è una classe Singleton quindi se dovessi chiamare un controller all'interno di un altro controller io alla fine con due punti di vista. D'altra parte, se dovessi chiamare solo il modello, non ci sarebbe il codice duplicato all'interno del controller elementi e profili.

Tutti gli esperti si MVC aiutano! =)

È stato utile?

Soluzione

In generale, mi piacerebbe andare per l'approccio "Fat Modello".

Non sono sicuro di quale codice si è davvero preoccupato per la duplicazione.

Ci sono un paio di modi si potrebbe fare questo:

Primo modo: - Interrogare il tuo modello Commenti per tornare alcuni commenti. - Far passare i dati di commento nel vostro punto di vista. - Render i commenti nella vista, possibilmente utilizzando alcuni view helper

Secondo Way: - Rendetevi conto che non c'è ragione per la vostra vista non può parlare direttamente con il vostro modello. -. Scrivere un aiutante vista che prende i dati di cui ha bisogno direttamente dal modello, e la rende

Io preferisco il secondo modo. Alcune persone hanno un problema lasciando che la loro visione strato di parlare al modello (in un modo di sola lettura!), Ma io non sono uno di loro.

Altri suggerimenti

Se si utilizza Kohana 3, è possibile beneficiare della funzione HMVC. È possibile eseguire i controller all'interno di controllori.

http://forum.kohanaphp.com/comments.php?DiscussionID=2768

Controlla il link qui sopra per alcuni esempi

Direi che dipende da ciò che i rendimenti del controller.

Se il controller può tornare DTOs / modelle, poi certo, chiamando un controller è una buona idea.

Il controller definisce una rigorosa, documentata, e si spera stabili punti di ingresso per la funzionalità. Pertanto, si può completamente ignorare la realizzazione di commenti, o modificarlo a piacimento, a patto che tu non modificare la firma del metodo di controllo.

Tuttavia, se il controller è in grado di restituire i dati grezzi, allora è sicuramente prolematic, perché che stai ricevendo html (o altro markup) in cambio. Ciò significa che dovrete tubo che HTML direttamente nella vista che si desidera, oppure estrarre i dati da esso. Entrambi questi è una cattiva idea.

Tubazioni il codice HTML grezzo implica che se si modifica la visualizzazione per i commenti, la visualizzazione dei commenti sul modulo Profilo inevitabilmente cambia. questo potrebbe essere quello che vuoi, ma mi piacerebbe andare per la flessibilità.

Ora, se si voleva i dati, dovrete estrarre i dati dalla marcatura la visualizzazione restituito, che è pesante e controproducente.

Se si sta cercando di chiamare un metodo statico, si può chiamare direttamente la funzione. Per esempio:

class Controller_User extends Controller {
    public static function format_user($user){
        return array("data" => $user->getData());
    }
}

class Controller_Foo extends Controller {
    public function action_index(){
        $user = get_user_data_some_how();
        $user_data = Controller_User::format_user($user)
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top