Migrating to Version 2.2
This version brings a huge change in structure of the framework – the main repository has been split into several standalone components.
The main repository has been physically split into the following repositories: Application, Bootstrap, Caching, ComponentModel, Nette Database, DI, Finder, Forms, Http, Latte, Mail, Neon, PhpGenerator, Reflection, RobotLoader, SafeStream, Security, Tokenizer, Tracy and Utils. Each repository represents
one component and has its own history, releases, issues, pull-requests, and, of course, composer.json.
You can still download the distribution package or install the whole framework using Composer by requiring nette/nette in your
composer.json. In addition, you can use each of the components on its own, without installing the rest of the
framework.
Latte
Latte was an integral part of the framework for a long time, and it was integrated with the rest of the framework (mainly with
the Nette\Templating namespace). In the new release, the Latte API was completely rewritten with stand-alone usage
in mind:
$latte = new Latte\Engine; // not the Nette\Latte\Engine
$latte->setTempDirectory('/path/to/cache');
$latte->addFilter('money', function ($val) { return /* ... */; });
// addFilter() replaced registerHelper() from previous releases
$latte->onCompile[] = function ($latte) {
$latte->addMacro(/* ... */);
// if you want add your own macros, see http://goo.gl/d5A1u2
};
$latte->render('template.latte', $parameters);
// or $html = $latte->renderToString('template.latte', $parameters);
Latte now handles template loading and caching. The original FileTemplate and the Nette\Templating
namespaces have been deprecated.
In addition, Nette\Application provides its own Template class, which replaces
FileTemplate, and TemplateFactory, which creates and initializes the templates for use in presenters and
controls.
Tracy
The whole debugger and diagnostics classes were moved to the Tracy namespace. This means that the most important
class, Nette\Diagnostics\Debugger, was renamed to Tracy\Debugger.
Prefix of the CSS classes in the debugger panel was changed from nette- to tracy- and the
nette-toggle-collapsed CSS class was replaced by the pair of tracy-toggle and
tracy-collapsed. In old extensions, these classes are automatically rewritten.
Other Changes
Classes ArrayHash, ArrayList, DateTime, Image and ObjectMixin
are now part of the Utils package and they were moved from Nette to the Nette\Utils
namespace. NetteLoader automatically creates aliases for these classes so they can be referenced by their old name.
Aliases for other renamed classes are created at run-time (i.e. during the auto loading), and a warning is raised each time you
use class by its old name.
Nette\Utils\MimeTypeDetector class was deprecated, the Fileinfo should be used directly since PHP 5.3.
Support for @serializationVersion annotation and custom annotation classes lookup was dropped, since it was not
used and only decreased the application performance.
When an error during link creation occurs, the returned path starts with #error: instead of error to
prevent browser errors. If you are using CSS to highlight incorrect links, please update your CSS styles for invalid
links.
New Features
The do parameter for forms is now transferred in the POST data to keep the URL more user-friendly.
The form values are passed as the second parameter to the onSuccess callback, to spare you from writing
$form->getValues(); in each form handler. New validators, Form::MIN and Form::MAX, were
introduced.
data- attributes in Nette\Utils\Html now accepts arrays. They will be automatically encoded
to JSON.
New function fetchAssoc() was added to the Nette\Database. The usage example can be found in test suite for
ResultSet.fetchAssoc().
@inject annotations now respect aliases defined by use statements. This means you are no longer
required to write fully qualified names when injecting dependencies.
Class Nette\Security\Passwords with static methods for password hashing and verification was introduced. This
class uses bcrypt algorithm and requires PHP 5.3.7 or higher. The bcrypt algorithm is more secure than traditionally used MD5 and
SHA-* hashing, so we recommend using bcrypt functions instead. Semantics of these functions is compatible with the Password Hashing extension from PHP 5.5.
Last, but not least, when defining users in the config.neon file, you can specify role for each user:
nette:
security:
users:
john:
password: **********
roles:
- manager
- reporter