Καλησπέρα σας είμαι καινούριος στο yii και στο mvc γενικότερα ,θα ήθελα να κάνω μια ερώτηση,έχω δημιουργήσει τον controller μου:
class ViewArticleController extends Controller
{ public $user=’’;
public function actionIndex()
{
$connection=Yii::app()->db;
$sql="SELECT * FROM article";
$command=$connection->createCommand($sql);
$dataReader=$command->query();
foreach($dataReader as $row){
echo $row['title'];
echo $row['text'];
}
$this->render('index');
}
Έχει δημιουργηθεί και το view ,αλλα μου βγάζει τα αποτελέσματα οχι εκεί που επιθυμω άλλα στο πάνω μέρος της σελιδας .Πως μπορώ να καθορίσω που θα μου εμφανισει το query απο τη βαση στο view μου,και να το μορφοποιήσω ετσι οπως εγώ θέλω.Σας στέλνω ένα screenshot του αποτελέσματος.Ευχαριστώ.
Αντί να εμφανίσεις τα αποτελέσματα στο view, τα εμφανίζεις μέσα στον controller. Γι’ αυτό σου εμφανίζει αυτά που βλέπεις πάνω πάνω. Δηλαδή εκείνο το
foreach($dataReader as $row){
echo $row['title'];
echo $row['text'];
}
θα πρέπει να το εφαρμόσεις μέσα στο view σου (index.php) και να το διαγράψεις από το controller action. Προκειμένου όμως στο index.php να έχεις διαθέσιμη τη μεταβλητή $dataReader, θα πρέπει να την περάσεις από τον controller. Αυτό θα γίνει στη γραμμή που καλείς τη render(), δηλαδή:
Ναι, είναι ένας από τους τρόπους που μπορείς να κάνεις queries. Το δικό σου βέβαια είναι απλό, θα μπορούσε να γίνει με Active Record.
Δηλαδή, να έχεις μια κλάση του τύπου CActiveRecord (να την κληρονομεί) που αντικατοπτρίζει ουσιαστικά τον πίνακα articles στη βάση σου (αυτό είναι το model στο MVC) και να έχεις στον controller σου:
$articles = Article::model()->findAll();
που φυσικά το $artiles θα το περνάς στο view σου κι εκεί θα το χειρίζεσαι με παρόμοιο τρόπο με αυτό που έχεις τώρα.
Ωστόσο, μην τρέξεις να αλλάξεις το query σου έτσι όπως το κάνεις τώρα. Δεν είναι λάθος. Εγώ σου περιέγραψα απλά ένα επιπλέον τρόπο.