Este repositório possui dois Models:
User
Debt
Este repositório possui três Controllers:
SiteController
principal controlador que exibe apágina inicial
epágina de perfil
DebtController
controlador que gerencia o ModelDebt
AuthController
controlador responsável porLogin
eLogout
do usuário
├───app
│ ├───controllers contains Web controller classes
│ ├───db contains database class
│ ├───http contains Web manager classes
│ ├───manager contains abstracts classes for Controllers, Models, etc.
│ ├───models contains model classes
│ ├───script contains scripts to configure your development environment
│ └───widgets contains widgets do be used on views
├───config contains application configurations
├───src
│ ├───assets contains Web resources
│ └───views contains view files for the Web application
└───tests contains tests for the basic application
- Se deseja criar mais
Models
basta criar uma nova classe que extendaapp\manager\Model
e definir as propriedades dentro do corpo da classe junto com seus respectivosGet's
andSet's
. - Para atribuir valores em todas as propriedades de uma vez utilize
$yourModel->load(array $content)
, recomendável fazer isso nos controladores para ficar mais práticos.- Exemplo:
public static function actionSave() { /** @var app\http\Request $request */ $request = self::getRequest(); $model = new ExampleModel(); if($request->isPost()) { $model->load($request->post()); $new = $model->isNewRecord(); if($model->save()) { if($new) { self::setFlash('success', 'Created successful!'); } else { self::setFlash('success', 'Updated successful!'); } self::redirect('/example/index'); } } return self::render('form', [ 'model' => $model ]); }
- Exemplo:
- Sobrescreva a função
validate()
para criar a validação do model que é executada emsave()
. Para cada erro encontrado usesetError('key', 'value')
para registra-lo. O erro aparecerá na tela do usuário na saída do widgetapp\widgets\Alert::run()
.
-
Se deseja criar mais
Controllers
basta criar uma nova classe que extendaapp\manager\Controller
e criar suas actions dentro do corpo da classe. É importante que todas as rotas iniciem poraction
e sejamstatic
! Exemplo:public static funtion actionIndex()
-
Para renderizar uma página use dentro do controller:
self::render('page');
sem.php
- Os arquivos são renderizados a partir do diretório
src/views
e a pasta onde se localizapage.php
possui o mesmo nome do controller utilizando um traço (-
) entre as palavras.- Exemplo: se o nome do controlador é
HomePageController
o nome da pasta seráhome-page
- Exemplo: se o nome do controlador é
- Os arquivos são renderizados a partir do diretório
-
Para passar parâmetros para a página renderizada passe como segundo parâmetro.
- Exemplo:
public static function actionIndex() { return self::render('home', [ 'title' => 'Home Page' ]); }
- Exemplo:
-
Para renderizar outra página já dentro de uma página utilize a classe
app\manager\View
para isso.- Exemplo:
/** filename without .php */ <?= View::render('folder', 'file') ?> or <?php echo View::render('folder', 'file') ?>
- Importante lembrar que todas as páginas são renderizadas a partir de
src/views
, então se'folder'
e'file'
foram passados como parâmetros, entende-se que o arquivo a ser renderizado está localizado em:src/views/folder/file.php
.
- Exemplo:
-
Para redirecionar o usuário para uma nova página utilize no controlador:
self::redirect('/new/page')
. -
Para exibir uma mensagem de feedback para o usuário utilize no controlador:
self::setFlash('type', 'message')
.- Tipos disponíveis:
danger
,success
,info
ewarning
. - Veja acima como utilizar.
- Utilize
app\widgets\Alert::run()
para exibir o alerta na página. - Para registrar sua rota para que todos os usuários possam acessa-las vá até
/index.php
:- instancie
$router = new app\http\Router;
- use
$router->get()
,$router->post()
,$router->put()
ou$router->delete()
para definir o tipo do método. -
$router = new Router(); // DebtController /** * * - Method POST * - Receive param {id} * - DebtController and action Delete respectively * - Only logged users can access this route * * @ = logged * ? = guest * * ignore `rules` will set ['@', '?'] as the default value */ $router->post('debt/{id}/delete', 'debt/delete', ['rules' => '@']);
- instancie
- Tipos disponíveis:
1. Clone este repositório e coloque-o na sua pasta "htdocs" ( ou aonde você renderiza seus projetos ).
2. Crie um banco de dados ( preferencialmente no MySQL ).
3. Execute o script localizado em `script/database.sql`.
4. Copie o conteúdo dentro de `script/httpd-vhost.conf` e coloque-o no seu `httpd-vhost.conf` ou em seu arquivo de configuração de VirtualHost.
5. Reinicie o Apache.
6. Coloque as informações do seu banco de dados em `config/main.php`.
7. Execute em seu terminal `php composer update`.
8. Acesse `http://mvc.localhost`.
9. Feito!
composer run test
Pull requests são bem-vindos. Para mudanças importantes, abra uma issue primeiro para discutir o que você gostaria de mudar.
Certifique-se de atualizar os testes conforme apropriado.