Resolvi criar um simples script para facilitar a configuração de projetos PHP, a cada vez que eu ia começar 1, era necessário eu criar um novo virtual host, adicionar no hosts o alias do ip, restartar apache, etc…
Então fiz um script simples, realmente simples em PHP para executar por linha de comando PHP-CLI, vou deixar a disposição para alguém que queria:
create-project.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| < ?php
/*
* Template of virtual host
*/
$template = "<VirtualHost *:80>\n";
$template .= "ServerName {$argv[1]}\n";
$template .= "DocumentRoot {$argv[2]}\n";
$template .= "<directory {$argv[2]}>\n";
$template .= " Options Indexes FollowSymLinks MultiViews\n";
$template .= " AllowOverride All\n";
$tempalte .= " Order allow,deny\n";
$template .= " allow from all\n";
$template .= "</directory>\n";
$template .= "ErrorLog /var/log/apache2/{$argv[1]}_error.log\n";
$template .= " LogLevel warn\n";
$template .= " CustomLog /var/log/apache2/{$argv[1]}_access.log combined\n";
$template .= "";
$template .= "\n";
echo $template;
$file = fopen("/etc/apache2/sites-available/{$argv[1]}", 'x');
fwrite($file, $template);
fclose($file);
exec("ln -s /etc/apache2/sites-available/{$argv[1]} /etc/apache2/sites-enabled/{$argv[1]}");
$file = fopen("/etc/hosts", 'a+');
fwrite($file, "127.0.0.1 {$argv[1]}\n");
fclose($file);
exec('/etc/init.d/apache2 restart');
echo 'Created with success the config for: ', $argv[1];
?> |
Para usar basta executar como root:
sudo php create-project.php nome_projeto /var/diretorio/
E pronto, ele criara o vhost, insere no hosts o alias, aponta o vhost para o diretório indicado e restarta o apache.
Ele funciona no Ubuntu linux, não testei em outras distros, e provavelmente possa não funcionar.
Posted in linux, php, programação | No Comments »
No CakePHP, as regras de definições são definidas nos modelos, então como fazemos quando queremos gerar um formulário, porém esse formulário não necessariamente vai ser salvo em um banco de dados, logo não tem modelo.
Para fazer isso na verdade criamos um modelo, esse modelo usamos como citado no post anterior. Ou seja, um modelo sem tabela.
Vamos por em prática com um caso de um formulário de contato:
Criando o modelo, sem tabela no CakePHP
file contact.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| < ?php
class Contact extends AppModel {
public $useTable = false;
public $validate = array(
'name' => array('rule' => 'notEmpty',
'message' => "Can't be empty the field name",
),
'email' => array('rule' => 'email',
'message' => "Put a email valid",
),
'message' => array('rule' => 'notEmpty',
'message' => "Can't be empty the field message",
),
);
}
?> |
Definidos três campos a serem validados, name, email e message.
Agora na view:
1
2
3
4
5
6
7
| < ?php echo $form->create('Contact', array('url' => '/contact/')); ?>
<fieldset>
< ?php echo $form->input('name'); ?>
< ?php echo $form->input('email'); ?>
< ?php echo $form->input('message'); ?>
</fieldset>
< ?php echo $form->end('Send'); ?> |
Criamos o form usando nosso modelo, onde guardamos a regra de validação, e mandamos imprimir os campos.
No controller:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| < ?php
class ContactController extends AppController {
public $name = 'Contact';
public $uses = array('Contact');
public function index() {
if (!empty($this->data)) {
$this->Contact->set($this->data);
if ($this->Contact->validates()) {
//send mail
}
}
}
}
?> |
Pronto usamos o modelo para validar os campos de formulário antes de fazermos nosso envio do email de contato.
Posted in cakephp, php, programação | 2 Comments »
Algumas vezes precisamos de modelos sem tabela do banco de dados, e para fazer isso no CakePHP, temos um attributo que definimos o uso ou não de tabelas no modelo:
1
2
3
4
5
6
7
| < ?php
class User extends AppModel {
public $useTable = false;
}
?> |
Posted in cakephp, frameworks, php, programação | 1 Comment »
Ocorreu nesse mês em Berlin o CakeFest3, para as pessoas como eu, que não puderam se fazer presente no evento, vale a pena da uma olhada no material das apresentações que rolaram por lá.
Para visualizar o material e fazer o download, acesse esse link.
Posted in cakephp, frameworks, php, programação | No Comments »
O XHTML 2, está com seus dias contados, não será mais tocado o projeto adiante ao seu lugar continuará o HTML 5, e agora com o foco total em cima dele.
Isso pode ser considerado uma boa novidade, pois teremos mais pessoas envolvidas em cima de 1 projeto, além de estabelecer um padrão, não termos mais duas linguagens de marcação na WEB.
Se você tem interesse de saber como anda o HTML 5, você pode conferir aqui, nesse site contém alguns exemplos do que teremos com o HTML 5.
Posted in web | No Comments »