CakePHP 3 and FPDF

FPDF is a PHP class which allows to generate PDF files with pure PHP. which can be easily integrated in our CakePHP 3 app.

Install FPDF via composer:

php composer.phar require setasign/fpdf

Add this at the top of our controller file:

use Setasign\Fpdf;
Create a test PDF in one of your actions:
$pdf = new \FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hello World!');
$pdf->Output();
exit;

Example of PHP Shorthand If / Else

I keep forgetting this, so here’s a note:

Basic True / False Declaration
$is_admin = ($user['permissions'] == 'admin') ? true : false;
Conditional Welcome Message
echo 'Welcome '.($user['is_logged_in'] ? $user['first_name'] : 'Guest').'!';
Conditional Items Message
echo 'Your cart contains '.$num_items.' item'.($num_items != 1 ? 's' : '').'.';
Conditional Error Reporting Level
error_reporting($WEBSITE_IS_LIVE ? 0 : E_STRICT);
Conditional Basepath
echo '<base href="http'.($PAGE_IS_SECURE ? 's' : '').'://mydomain.com" />';
Nested PHP Shorthand
echo 'Your score is: '.($score > 10 ? ($age > 10 ? 'Average' : 'Exceptional') : ($age > 10 ? 'Horrible' : 'Average') );
Leap Year Check
$is_leap_year = ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));
Conditional PHP Redirect
header('Location: '.($valid_login ? '/members/index.php' : 'login.php?errors=1')); exit();

How to set a custom displayField in CakePHP 3

We can concatenate two fields into a virtual field which will become our new displayField.

In your Entity:

// ...

class YourEntity extends Entity
{
// ...

protected function _getNameDesc()
{
return $this->_properties['name'] . ' - ' . $this->_properties['desc'];
}
}

In your Table:

// ...

class YourTable extends Table
{
// ...

public function initialize(array $config)
{
$this->displayField('name_desc');
// ...
}
}

See also:

https://book.cakephp.org/3.0/en/orm/entities.html#creating-virtual-fields