Archive of November 2008
Speed up your slow Firefox DNS lookups in Leopard OS X by turning off IPv6


Apple › System Preferences › Network › Advanced › TCP/IP tab › Configure IPv6 › Off
Find the Character Map in Leopard OS X

Apple › System Preferences › International › Input Menu
Check “Keyboard Viewer” and “Show input menu in menu bar”
Flag Menu › Show Keyboard Viewer
rm -rf ./*/.DS_Store
rm -rf ./*/.svn
Adding and/or injecting error messages into Symfony 1.1 Forms
Symfony 1.1 does a great job handling forms and form validation but say you have a few external forces checking the validity of the user submitted data, such as Paypal. Paypal would love to return it’s own error messages (thank you very much!) and tie it to a particular form field (say, the credit_card field).
Place this method into “symfony_project/lib/form/BaseFormPropel.class.php”:
/** * Define error * * <code>author Dmitry Nesteruk, Andrey Kotlyarov *
param string $fieldName *
param string $message *
return void */ public function defineError($fieldName, $message) { $checkName = ‘check_define_’.md5($fieldName); $this->getErrorSchema()->getValidator()->addOption($checkName); $this->getErrorSchema()->getValidator()->addMessage($checkName, $message); $this->getErrorSchema()->addError( new sfValidatorError( $this->getErrorSchema()->getValidator(), $checkName, array( ‘value’ => sfContext::getInstance()->getRequest()->getParameter($fieldName), $checkName => $this->getErrorSchema()->getValidator($checkName) ) ) ); }
And use it like so:
<br />
$this->form = new BillingForm();<br />
$Paypal->sendPayment();<br />
if(in_array($Paypal->error_codes,10527)){
$this->form->defineError(‘credit_card’,“Paypal doesn’t like your credit card number. Please try another.”);<br />
}<br />Loading extra YAML config files in Symfony 1.1
At Dogster, we had a bunch of strings and settings that we wanted to keep out of our actions and place into their own YAML files instead of overloading the app.yml file. Here’s how I did it:
You can use this Filter to load the files we’ll setup in app.yml. Place this new PHP file at “symfony_project/apps/frontend/lib/addYmlFilter.class.php”.
class addYmlFilter extends sfFilter<br />
{
public function execute($filterChain)
{
// Execute this filter only once
if ($this->isFirstCall() && is_array(sfConfig::get(‘app_load_yml_files’)))
{
// Filters don’t have direct access to the request and user objects.
// You will need to use the context object to get them
foreach(sfConfig::get(‘app_load_yml_files’) as $file){
@include(sfContext::getInstance()->getConfigCache()->checkConfig(‘config/’.$file.’.yml’));
}
}
// Execute next filter
$filterChain->execute();
}<br />
}That filter takes care of all your caching and per-environment settings, the same as app.yml or the others in the config folder.
We will now setup four (4) new YAML files (config/paypal.yml, config/email.yml, config/flash.yml, config/forms.yml)
Place this in your app.yml file:
load:
yml_files:
0: paypal
1: email
2: flash
3: formsLastly, create a new YAML file “config/config_handlers.yml” with entries for each YAML file we would like to load:
config/paypal.yml:
class: sfDefineEnvironmentConfigHandler
param:
prefix: paypal_<br />
config/email.yml:
class: sfDefineEnvironmentConfigHandler
param:
prefix: email_<br />
config/forms.yml:
class: sfDefineEnvironmentConfigHandler
param:
prefix: forms_<br />
config/flash.yml:
class: sfDefineEnvironmentConfigHandler
param:
prefix: flash_Here is some example content you might find within email.yml:
all: admin: 'admin@example.com'
Once you load up Symfony, you should see all of your new config settings in the debug toolbar under “vars & config” > “SETTINGS”.
If you would like to place the new admin email setting within your code, you can now use sfConfig:
echo sfConfig::get(‘email_admin’);<br /> //outputs: admin@example.com
Simple!
I just got this book for my birthday. It’s a beautiful book. I’ve read only a few entries and I’m already hooked. Let’s not forget to learn from those that came before us.