https://github.com/becodeorg/verou-5-mvc-xzanderzone
verou-5-mvc-Xzanderzone created by GitHub Classroom
https://github.com/becodeorg/verou-5-mvc-xzanderzone
Last synced: 9 months ago
JSON representation
verou-5-mvc-Xzanderzone created by GitHub Classroom
- Host: GitHub
- URL: https://github.com/becodeorg/verou-5-mvc-xzanderzone
- Owner: becodeorg
- Created: 2024-01-18T09:06:27.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-01-22T08:27:21.000Z (over 2 years ago)
- Last Synced: 2025-09-04T04:44:11.677Z (9 months ago)
- Language: PHP
- Size: 14.6 KB
- Stars: 0
- Watchers: 7
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Model, view, controller (also: even more acronyms 🤔)
- Repository: `mvc`
- Type of Challenge: `Learning`
- Duration: `2-3 days`
- Team challenge : `solo`
## The mission
MVC is one of the typical acronyms in programming.
It's a structure that will split your project into different files with a clear responsibility for each:
- **Models** are classes that contain data. They usually correspond to a table from your database.
- **Views** are files that will mostly contain HTML. Any user facing end result will be made here.
- **Controllers** are classes responsible to control the handling of a request: they will load the right models and provide them to the correct view.
> Why all this hassle? Can't I just get the data I need in the index?
> The answer is simple: yes, you can`*`.
## 🌱 Must-have features
### Step 1: have a look around
First, read the code provided in the [starter pack](./Starter-pack).
It's well documented with comments. Try to follow the track of the homepage.
Can you follow the path to the view?
> Know what you Google for: modal or model? A modal is a popup window, a model is part of the MVC structure. Or your future boy/girlfriend.
### Step 2: preparation
For this exercise, you'll need a database with an articles table.
Add three fields:
- title (VARCHAR, 255)
- description (TEXT)
- publish_date (DATETIME)
Discover the writer in yourself and provide some dummy content. (childhood stories allowed)
### Step 3: showtime
The homepage from the starter pack works and provides a link to the articles page.
The articles > index view contains a nice overview of the articles, but does not have the data.
Finish all the TODO's in the controller to provide the required info.
## 🌼 Nice to have (doable)
- Provide a detail page to show all content from an article.
- Add previous/next links to an article detail page.
- Can you find any info that would make sense to a function in the article model? There's a hint in the spoiler below.
- An article right now is pretty dry. Make it stand out by adding the related database properties, or upgrading the existing ones. (example: a url to an image)
Hint for the article model
The url is a good example of something related to an article that you might need multiple times. Moving this to a function in that model will make possible future changes to it *way* easier. Can you spot in your future code?
## 🌳 Nice to have (hard)
- Expand the database and models with an author. Each article should have an author. The article title should be shown in the following format `A guide on building your own rocket - By Elon Musk`.
- Make a detail page for an author, listing all his/her articles on that page.
> `*` This will not prepare you for frameworks however, which make heavy usage of the MVC pattern`**`
> `**` Alright, then... is there *always* a catch?
> The answer is simple: yes.
Best of luck!
I hope you'll be able to end with these famous words:
