PhP OOП помощ при структориране на MVC шаблон

dj_vansa

Registered
Здравейте искам да започна да се занимавам с ООП и ми казаха след като разгледам някой основни концепции, да почна да решавам отделни проблеми. До сега мисля че се справих с доста от тях, но се натъкнах на нещо като грешка в логиката на приложението ми и не мога да открия как да го оправя. Идеята е следната, извеждам си в контролера резолтати от базтата данни (заглавия на теми) чрез цикъл, в резултатите динамично се генерират линкове с имената на заглавията, класически форум. Но проблема идва след като се опитам да ги визоализирам в View-а линковете не се стилизират от СС$-а и си оставят по подразбиране. Ето и частите от кода :
Метода за извикване на линковете:
Код:
    public function getNewsTitle() {
        $sql = "SELECT * FROM `post` ORDER BY `post`.`post_id` DESC  ";
        $query = mysql_query($sql);
        while ($row = mysql_fetch_array($query)) {
?>
            <br/>
            <a href="../view/read_more.php?id=<?=$row['post_id'] ?>"><?=$row['tittle'] ?></a>
<?
}
}

И сега часта на View-a:
Код:
<?php
include 'header_v.php';
include 'menu_v.php';
include_once '../func/news.class.php';
?>
<div class="content">
    <? if(!is_numeric($_GET['id'])){
        $viewNewsTitle = new ViewNews();
        ?>
    
   
			<div class="descr"><h1><?=$getTitle = $viewNewsTitle->getNewsTitle();?></h1></div>

</div>

		<div class="navigation">
Има още доста код за това съм дал само проблемните места. Надявам се някой да ми каже как точно да визоализирам заглавията и да мога да ги стилизарам, не искам във View-то да завъртям цикал-а, така работят но не мисля че е много правилно от към MVC структурата .
Благодаря ви за вниманието
 
Не си показал какво имаш в CSS файла. Има много варианти да постигнеш, това което искаш.

1. Сложи клас на тези линкове и след това задай параметрите на този клас в CSS

Код:
PHP:
<a href="../view/read_more.php?id=<?=$row['post_id'] ?>" class="title"><?=$row['tittle'] ?></a> 

CSS:
a.title {
   color: #990000;
}

2. Друг вариант е селектора да включва всичко до линка:

Код:
div.descr h1 a {
   color: #990000;
}
 
Аз тук не виждам MVC, някой доста те е по объркал какво значи.


Въобще не е правилно да имаш в модела клиентски код.По просто в функцията която ти връща резултати от базата, не трябва да има html.

И точно в view-to се върти цикъла.
В контролера викаш метода които иска данните от базата, взимаш ги и ги пускаш на вю-то, след това ги визуализираш.
 
И аз не виждам MVC.

Какъв е този контролер с HTML и заявки???
PHP:
public function getNewsTitle() {
        $sql = "SELECT * FROM `post` ORDER BY `post`.`post_id` DESC  ";
        $query = mysql_query($sql);
        while ($row = mysql_fetch_array($query)) {
?>
            <br/>
            <a href="../view/read_more.php?id=<?=$row['post_id'] ?>"><?=$row['tittle'] ?></a>
<?
}
}

Контролера има за задача да "контролира" информацията върната му от модела и да я бута към View-то. Информацията която взимаш от базата данни трябва да е в модела, контролера трябва да вика този модел, там каквото му трябва. Друго... никакав HTML в контролера. Закакво тогава ти е View, като слагаш html в контролера.
Има още доста код за това съм дал само проблемните места. Надявам се някой да ми каже как точно да визоализирам заглавията и да мога да ги стилизарам, не искам във View-то да завъртям цикал-а, така работят но не мисля че е много правилно от към MVC структурата .

В грешка си, информацията трябва да се върти там. Този цикъл и всякакав html в view-то.
 
Благпдарско за отговорите, за съжеление съм разбрал погрешно концепцията за MVC, наистина във контролера не трябва да имам заявки, пооправих го. Когато завърша проекта мисля да го постна, и да си кажете мненията :)
 
CodeIgniter ? Защо използва във View вмъкване с include, има контролер(controller) за тази цел.
 
ArchangelS каза:
CodeIgniter ? Защо използва във View вмъкване с include, има контролер(controller) за тази цел.

Какво общо има CI с MVC (освен, че е такъв framework)?

Как предлагаш да вмъкне други части от темплейта с контролер :shock: ? Тази част си е съвсем правилна.
 
Karcho каза:
ArchangelS каза:
CodeIgniter ? Защо използва във View вмъкване с include, има контролер(controller) за тази цел.

Какво общо има CI с MVC (освен, че е такъв framework)?

Как предлагаш да вмъкне други части от темплейта с контролер :shock: ? Тази част си е съвсем правилна.

1.$this->load->view(); - така вмъква чаястите, става и с библиотека.
2.Предполагам, защото като спомена МВЦ, най-лесния е може би Коде Игнайтър, може и да има други, но от самата структора на кода, се вижда, че не е някой темплейт фреймуорк като смарти или паттемплейт.А да не говорим за Зенд.

П.С с CodeIgniter ? Питам дали ползва фреймуорка или не, не съм казвал специално за него..Всеки фреймуорк си има своите специфики, за Коде Игнайтър това 1 вото е начина.
 
1. "Коде игнайтър" :?: наясно ли си какво точно е CI и MVC -
Предполагам, защото като спомена МВЦ, най-лесния е може би Коде Игнайтър, може и да има други, но от самата структора на кода, се вижда, че не е някой темплейт фреймуорк като смарти или паттемплейт.А да не говорим за Зенд.
:shock:

2. Не съм използвал CodeIgniter, но мисля, че с `$this->load->view(); ` си зареждаш view-то. Аз искам да заредя него и отделно файлове `header` и `footer`, които се вмъкват в началото и края на файла, 3 пъти ли да викам този method? По удобно е да заредя даденото View и от там да си включа header-a и footer-a. Както и да е.
 
Аз съм наясно, а ти ?

Какъв темплейтен файл говориш за това зареждане, зареждаш си обикновен файлт който ти е в Вю папката. МВЦ, да Модел Вю и Контролер, Коде игнайтър е такъв фреймуорк - на този принцип, както и ти сам спомена, тогава какъв е проблема ?

Малко повече..

Имаш 4 Вюта да речем.

header.php
body.php
footer.php

Във Вюто site.php си зареждаш -

$this->load->("header.php");

$this->load->("body.php");

$this->load->("footer.php");

Сайта е сглобен..
 
Не съм се опитал да се заям, ако така ти е прозвучало.

MVC != Framework.
$this->load->("header.php");

$this->load->("body.php");

$this->load->("footer.php");

така може да си ги зареждате в CodeIgniter, но това предполагам е равносилно на include/require. Няма нищо лошо в view-то да си вмъква други view-та, както и в модела да си вмъква други модели ?
 
Казах че е на този принцип, използват се модел вю и контролер.

Нека да приключим темата, че я наспамихме :) :)
 

Back
Горе