/ Gists / Nette

Gists - Nette

On gists

Nette - odeslání přílohy emailem

Nette

send-mail-with-attachment.php #

if ($values['cv']->isOk())
{
  $mail->addAttachment($values['cv']->name, file_get_contents($values['cv']->temporaryFile));
}

On gists

Automatické přihlášení - NETTE

Nette Nette-Tricks

RegisterPresenter.php #

		$this->user->login(new Nette\Security\Identity($row["id"], array(), $row));
		$this->redirectUrl($this->link('@homepage'));

On gists

Flashes

Nette

Nette-flashes.php #

  <div n:if="$flashes">
      <div n:foreach="$flashes as $flash" class="alert-{$flash->type}">{$flash->message}</div>
  </div>


  <div n:if="$form->hasErrors()">
      <div n:foreach="$form->errors as $error" class="alert-error">{$error}</div>
  </div>

On gists

Nette - multiplier.php

Nette

form.latte #

{foreach ... as $row}
        {form order-$row}
              {input count}
              {input send}
          {/form}
{/foreach}

On gists

Nette download

Nette

nette-download.php #

	public function downloadFile($source, $fileName){
		$httpResponse = $this->context->getService('httpResponse');
		$httpResponse->setHeader('Pragma', "public");
		$httpResponse->setHeader('Expires', 0);
		$httpResponse->setHeader('Cache-Control', "must-revalidate, post-check=0, pre-check=0");
		$httpResponse->setHeader('Content-Transfer-Encoding', "binary");
		$httpResponse->setHeader('Content-Description', "File Transfer");
		$httpResponse->setHeader('Content-Length', filesize($source));
		$this->sendResponse(new FileResponse($source, $fileName));
	}
	
	
		public function handleQrCodeDownload($hash, $id)
	{
		$user = $this->model->find($id);

		if ($hash !== sha1($user->id . $user->slug))
		{
			$this->error();
		}

		// lepsi cesta k souboru? http://forum.nette.org/cs/21269-fileresponse-soubor-neexistuje#p145741
		$userWebalize = Nette\Utils\Strings::webalize($user->firstname . '-' . $user->lastname);
		$response = new Nette\Application\Responses\FileResponse(WWW_DIR.'/storage/images/200x200/'.$hash.'.png', 'qr-'.$userWebalize.'.png');
		$this->sendResponse($response);
 	}
 	
 	
 	
 	// https://forum.nette.org/cs/21269-fileresponse-soubor-neexistuje#p145741

On gists

Nette - routování - překladová tabulka

Nette

nette-routing.php #

<?php


$router[] = new Route('<presenter galerie|blog|novinky|ubytovani>/<action>[/<id>]', array(
                    'presenter' => array(
                        Route::FILTER_TABLE => array(
                            // řetězec v URL => presenter
                            'galerie' => 'Gallery',
                            'blog' => 'Blog',
                            'novinky' => 'News',
                            'ubytovani' => 'Accommodation'
                        )),
                    'action'    => 'default'
                ));
                $router[] = new Route('<presenter>/<action>[/<id>]', array(
                    'presenter' => 'Page',
                    'action'    => 'default'
                ));

On gists

Nette form - vykreslení chyb

Nette

error.latte #

  <!-- Jednoduché vykreslení chyb -->
  <div class="error-message" n:if="$form->hasErrors()">
          <div n:foreach="$form->errors as $error">{$error}</div>
  </div>
  
  
  
  {control $form errors}

On gists

Bootstrap renderer

Nette

nette-bs-renderer.php #

<?php

/**
 * Nette Forms & Bootstap 3 rendering example.
 */


if (@!include __DIR__ . '/../vendor/autoload.php') {
	die('Install packages using `composer update --dev`');
}

use Nette\Forms\Form,
	Nette\Forms\Controls,
	Tracy\Debugger,
	Tracy\Dumper;

Debugger::enable();


$form = new Form;

$form->addGroup('Personal data');
$form->addText('name', 'Your name')
	->setRequired('Enter your name');

$form->addRadioList('gender', 'Your gender', array(
	'male', 'female',
));

$form->addCheckboxList('colors', 'Favorite colors:', array(
	'red', 'green', 'blue',
));

$form->addSelect('country', 'Country', array(
	'Buranda', 'Qumran', 'Saint Georges Island',
));

$form->addCheckbox('send', 'Ship to address');

$form->addGroup('Your account');
$form->addPassword('password', 'Choose password');
$form->addUpload('avatar', 'Picture');
$form->addTextArea('note', 'Comment');

$form->addGroup();
$form->addSubmit('submit', 'Send');
$form->addSubmit('cancel', 'Cancel');


if ($form->isSuccess()) {
	echo '<h2>Form was submitted and successfully validated</h2>';
	Dumper::dump($form->getValues());
	exit;
}



// setup form rendering
$renderer = $form->getRenderer();
$renderer->wrappers['controls']['container'] = NULL;
$renderer->wrappers['pair']['container'] = 'div class=form-group';
$renderer->wrappers['pair']['.error'] = 'has-error';
$renderer->wrappers['control']['container'] = 'div class=col-sm-9';
$renderer->wrappers['label']['container'] = 'div class="col-sm-3 control-label"';
$renderer->wrappers['control']['description'] = 'span class=help-block';
$renderer->wrappers['control']['errorcontainer'] = 'span class=help-block';

// make form and controls compatible with Twitter Bootstrap
$form->getElementPrototype()->class('form-horizontal');

foreach ($form->getControls() as $control) {
	if ($control instanceof Controls\Button) {
		$control->getControlPrototype()->addClass(empty($usedPrimary) ? 'btn btn-primary' : 'btn btn-default');
		$usedPrimary = TRUE;

	} elseif ($control instanceof Controls\TextBase || $control instanceof Controls\SelectBox || $control instanceof Controls\MultiSelectBox) {
		$control->getControlPrototype()->addClass('form-control');

	} elseif ($control instanceof Controls\Checkbox || $control instanceof Controls\CheckboxList || $control instanceof Controls\RadioList) {
		$control->getSeparatorPrototype()->setName('div')->addClass($control->getControlPrototype()->type);
	}
}


?>
<!DOCTYPE html>
<meta charset="utf-8">
<title>Nette Forms & Bootstrap 3 rendering example</title>

<link rel="stylesheet" media="screen" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" />
<style>
form {
	max-width: 50em;
}
</style>

<div class="container">
	<div class="page-header">
		<h1>Nette Forms & Bootstrap 3 rendering example</h1>
	</div>

	<?php echo $form ?>
</div>

On gists

Odeslání přílohy z formuláře

Nette

Odeslani-emailu-s-prilohou-z-for #

<?
$mail->addAttachment($values['priloha'])->setHeader('Content-Disposition', 'attachment; filename='.$values['priloha']->getName());
?>

On gists

Nette - ajaxové hlasování

Nette

usage.latte #

				
				{foreach $rows as $row}
					{control vote-$row->id}
				{/foreach}