Etapele crearii unui site

Nu, e deformatie profesionala :slight_smile:

Odata m-a sunat un client pentru niste informaţii legate de un echipament de reţea. Îi recomand eu un router, ii povestesc despre caracteristicile lui etc. Omul, amabil, după ce mă lasă să vorbesc 5 minute, intreabă candid: “nu vă supăraţi, ce-i ăla router?”

Astfel am ajuns să fac tot posibilul ca, inainte sa incep sa povestesc chestii complicate, să mă asigur că interlocutorul meu chiar înţelege ce naiba vorbesc eu acolo :slight_smile:

1 Like

Un asa site nu e tocmai un site de facut pentru un incepator, chiar si mie mi-ar lua cel putin o saptamana buna, doua sa il fac si stiu exact ce e in spate, chiar o luna daca trebuie proiectata si baza de date.

Chiar si HTML si CSS-ul ia ceva de munca fara sa pui ceva date dinamice.

Desi nu sunt un expert in zona asta am sa incerc sa iti rezum cateva informatii (cred eu) folositoare:

  • Foloseste un server Linux pentru proiect, va trebui sa ai PHP,MySql si Apache/Nginx instalat. Pentru configurarea lor gasesti pe internet documentatie destula.
  • Saitul pe care l-ai pomenit (desi unul cam urat din punctul meu de vedere :slight_smile: ) poate fi folosit ca sursa de inspiratie, totusi nu incerca sa-l copiezi.
  • Saitul model nu pare SPA deci si continutul tau (pagina in sine) poate fi generat la (aproape) fiecare click pe linkurile din pagina. E o metoda simpla si nu ai nevoie neaparat de AJAX sau api-uri care ar complica lucrurile si inteleg ca nu esti inca pregatit. Foloseste template-uri imbricate. Eu nu lucrez in PHP dar cred ca ai mecanisme similare si acolo. Asta cred ca ar raspunde la intrebarea ta.
  • Asa cum a sugerat @tekkie mai sus schiteaza-ti specificatiile saitului atat pe partea de frontend cat si pe partea de backend
  • In completare, eu la proiectele mele schitez pe hartie interfata si realizez un mockup in html (pagina cu pagina) pe care il folosesc ulterior in template-uri. Iti recomand acest lucru pentru ca vezi altfel lucrurile, incepi sa codezi dupa ce ai stabilit clar cum arata frontendul. De asemenea avand mockup-ul e mai simplu sa intelegi ce va face backendul. :wink:

Spor.

2 Likes

Salut,

Si eu am avut dificultati in a intelege modul in care lucreaza controller-ul. Ceea ce iti lipseste in a intelege MVC este sistemul de routare, adica modul in care un url (ex: https://www.restaurantebrasov.ro /locatie / grand-restaurant-brasov) este asociat unui anumit fisier PHP care sa il proceseze. Fisierul este controller-ul. Un exemplu concret pentru site-ul care functioneaza la adresa de mai sus:

  1. in aplicatie am definita o “ruta” pentru fiecare url din site static/dinamic:
    exemple: restaurantebrasov.ro /, restaurantebrasov.ro / locatie / grand-restaurant-brasov, restaurantebrasov.ro / restaurante-nunti-brasov, etc.

  2. am un fisier php, o clasa (controller) in care am o metoda (functie) asociata fiecarei rute. Iti dau ca exemplu ruta care “se ocupa” de toate url-urile sub forma restaurante.ro / locatie / nume_restaurant (restaurantebrasov.ro/locatie/grand-restaurant-brasov).
    Functia corespunzatoare rutei de mai sus preia ca parametru numele restaurantului, il cauta in baza de date, extrage informatiile daca este gasit si imi trimite aceste informatii catre un template folosit pentru afisare. Template-ul este un alt fisier php care primeste informatiile despre restaurant intr-un array si le afiseaza pe site folosind html, css, js. Acest fisier este “view-ul” definit de mine pentru url-urile cu forma de mai sus. Fisierul este cu extensie “.php” ca sa pot prelua valoarea variabilelor trimise de controller. In fisier mare parte din cod este html sau js.

Functia are codul de mai jos si mai corect spus este o metoda pentru ca tot controller-ul meu este reprezentat de o clasa. Am scurtat corpul metodei si am lasat doar ce este relevant.

    /**
     * @Route("/locatie/{seoUrl}", name="locatie")
     */
    public function restaurant(Request $request, $seoUrl)
    { 
        $em = $this->get('doctrine')->getManager();
   
        
        $query = $em
        ->createQuery(
            'SELECT l, s, o FROM AppBundle:Locatie l
            JOIN l.specific s
            JOIN l.oras o
            WHERE l.seoUrl = :seoUrl'
        )->setParameter('seoUrl', $seoUrl);
             
    $informatii = $query->getSingleResult();

        $destinatar = $informatii->getDenumire();
        
        return $this->render('default/restaurant.html.twig', ['informatii' => $informatii, 'form' => $form->createView(), 'newsletterForm' => $form->createView()]);
    } 

Site-ul are la baza un framework-ul Symfony 3, care are implementat sistemul de routare si trebuie doar sa il folosesc :smile: Nu am incercat inca sa implementez MVC de la zero. Un alt framework care mi se pare mult mai usor de folosit si inteles este CodeIgniter .

Eu asa am inteles ca functioneaza si se foloseste MVC. Daca gresesc, rog sa ma corecteze colegii cu mai multa experienta.

3 Likes

Apropo de MVC-uri, dupa ce am testat mai multe si am remarcat ca sunt ingrozitor de lente, am creat de la zero un MVC minimal si ultra-rapid. Fara caching sau alte inginerii de accelerare serveste cvasi-instantaneu orice pagina.

1 Like

Da, imi sunt familiare, fiecare separat, sau mai bine zis in ‘grupul’ lor, cum ar fi, de exemplu, HTML+CSS.
Insa, cum am zis: ok, am creat UI cu HTML+CSS, mi-am instalat LAMP pe VPS, mi-am facut DB.
Cum fac sa imi fie afisata o pagina fara a avea un fisier (de orice tip) creat din timp pentru acea pagina?
Mai exact, de care instrumente am nevoie? Asta e nelamurirea mea.
Adica, nu stiu ce sa studiez in continuare pentru a ajunge, intr-un final, la nivelul necesar pentru a putea crea un site precum hltv.org.

N-ai pomenit PHP. Ăsta îl ştii? Posibil asta să fie veriga care îţi scapă…

1 Like

Parerea mea este ca in capul tau e varza, nu nu o spun cu rautate(Mi s-a spus si mie asta).
Eu zic sa te opresti, sa stai gen 1-2 saptamani pentru fiecare (html,css,sql) si dupa 1-2 luni pe php(Pentru CRUD, OOP,PDO poate si SQL lite(mda pare boring si poate ciudatel pana ajungi in situatia in care trebuie sa … faci un sql pentru ceva ce e offline), REST,ACL,MVC si altele care nu imi vin in cap acum.

Spun asta pentru ca banuiesc ca in sinea te esti putin, frustrat sau doar in ceata.

"mi-am instalat LAMP pe VPS"
P-ul de la ce vine? Sunt sigur că nu se referă la Perl

1 Like

Faptul ca il instalezi nu inseamna ca si stii ce sa faci cu el…

1 Like

Eu iti recomand sa cauti pe Youtube o serie de tutoriale care prezinta procesul de creare al unei aplicatii web folosind tehnologiile enumerate, vei intelege mult mai bine, crede-ma.

2 Likes