Category Archives: PHP

Mặc định permisions của file cached

Khi làm với shell của cake , sẽ gặp trường hợp shell bị xung đột các file trong tmp
vì shell thì thường chạy với user khác so với user khi chạy web
nên các file tmp nó bị permission denied
Continue Reading

Xóa comment trong html, đếm số thẻ tag trong html

// Remove unwanted HTML comments
function remove_html_comments($content = '') {
	return preg_replace('/<!--(.|\s)*?-->/', '', $content);
}
 //get count tag in html
 function getCountTagInHtml($content,$tag) {
    $c = 0;
    if(trim($content)!=""){
       try {
           $dom = new DOMDocument;
           $dom->loadHTML($content);
           $c = $dom->getElementsByTagName($tag)->length;
       } catch (Exception $exc) {
       }
     }
    return $c;
 }

Amazon S3 vs Cakephp

Sử dụng plugin này

https://github.com/robmcvey/cakephp-amazon-s3

Cho phép apache chạy script python (CGI)

Bài hướng dẫn này dựa theo server ubuntu 14.04. Tham khảo.
http://httpd.apache.org/docs/current/howto/cgi.html

Continue Reading

Cách tìm file khai báo 1 class trong php

$reflector = new ReflectionClass(‘SiteManager’);
echo $reflector->getFileName(); die;

Dowload hoặc create file pdf trong cakephp3 sử dụng cakepdf

  • Link doc : https://github.com/FriendsOfCake/CakePdf-
  • Yêu cầu : 
    – PHP 5.4.16+
    – CakePHP 3.0+
    – wkhtmltopdf
  • Cài đặt wkhtmltopdf  : sử dụng Composer
    composer require friendsofcake/cakepdf
  • Thêm code vào file config/bootstrap.php
    // load CakePdf
    Plugin::load(‘CakePdf’, [‘routes’=>true,’bootstrap’ => true]);
    // cấu hình CakePdf (có thể thêm các yeu to khác trong link doc)
    Configure::write(‘CakePdf’, [
    ‘engine’ => [
    ‘className’ => ‘CakePdf.WkHtmlToPdf’,
    // Path trên server và server cần cái đặt wkhtmltopdf
    //’binary’ => ‘/usr/local/bin/wkhtmltopdf’,
    // Path trên window và cần cài thêm wkhtmltopdf.exe về máy tính theo link dưới
    ‘binary’ => ‘C:\Program Files (x86)\wkhtmltopdf\bin\wkhtmltopdf.exe’,
    ],
    ]);
  • Thêm code vào file config/routes.php 
    Router::extensions([‘pdf’]); // tạo môi trường pdf
  • Sử dụng : có 2 kiểu sử dụng là
    1 . Render ra view môi trường pdf(có thể set download= true để tự động down,mặc định sẽ là render ra view) 
    – Tạo file PdfsController có :
    public $components = array(‘RequestHandler’);
    public function download($id) {
    // config pdf để download
    $this->viewBuilder()->options([
    ‘pdfConfig’ => [
    ‘orientation’ => ‘portrait’,
    ‘filename’ => ‘filename.pdf’, // file name download
    ‘download’ => true // nếu true sẽ tự động down, false sẽ render ra view
    ]]);
    }
    -Tạo file layout cho pdf  src\Template\Layout\pdf\default.ctp
    -Tạo file view cho pdf     src\Template\Pdfs\pdf\download.ctp
    Cuối cùng chạy link  : /pdfs/download/29.pdf’ // 29 la id
    2. Tạo ra file pdf lưu trên server
    – Tạo file PdfsController có :
    public $components = array(‘RequestHandler’);
    public function createFile() {
    $CakePdf = new \CakePdf\Pdf\CakePdf();
    $CakePdf->template(‘create_file’, ‘default’);//run view pdf/create_file and layout pdf/default
    $CakePdf->viewVars([‘dataPdf’ => 1]);// truyền biến ra view
    // Get the PDF string returned
    $pdf = $CakePdf->output();
    $pdf = $CakePdf->write(WWW_ROOT . ‘files’ . DS . ‘pdf’ . DS . ‘ronaldo.pdf’); // tạo file pdf
    }
    -Tạo file layout cho pdf  src\Template\Layout\pdf\default.ctp
    -Tạo file view cho pdf    src\Template\Pdf\create_file.ctp
    Cuối cùng chạy link  : /pdfs/createFile

Cài đặt font chữ Nhật cho phần tạo file pdf

Khách hàng yêu cầu bạn tạo ra file pdf nhưng lại có chữ tiếng Trung, tiếng Nhật. Sau khi cài các thư viện rồi tạo ra giao diện rất ổn, bạn chợt nhận ra mất chữ.
Continue Reading

Thêm số 0 vào trước với những số có 1 chữ số

str_pad($i, 2, ‘0’, STR_PAD_LEFT);

 

nếu $i là 1 chữ số thì tự thêm 0 , nếu là 2 chữ số thì ko làm gì cả

ví dụ nếu $i là 1  => thì trở thành ’01’

nếu $i là 12 thì vẫn là 12

 

được sử dụng trong trường hợp hiện tháng , ngày ( theo dạng 01 , 02 …. )

 

Copyright © 2017. Powered by WordPress & Romangie Theme.