Help Авторизация
  

 
Еще не зарегистрированы?
Забыли пароль?
Добавить в избранное

Статьи

Sf
Symfony
Notation
Официальная документация
Notation
Плагины
Notation
Контроллеры
Notation
Базы данных
Php
PHP
Notation
Базы данных
Js
JavaScript
Notation
Разное
Notation
Prototype
Help Специалисты
Men Жариков Дмитрий
Help Консультации
Consult Весь список
Help Каталог работ
Web Специфичное
Web Брачные агенства
Web Каталоги продукции
Web Интернет-магазины
Web Бизнесс порталы
Web Сайты знакомств
Blognot_big   Блоги
Feed Название
Информация Описание
Npub Nblognot
FolderFolderPHP
Npub Nblognot
Записей: 1
Последняя: 25 января 2009 г.

Приемы в PHP

Npub Nblognot
Записей: 1
Последняя: 4 сентября 2008 г.

Работа с базой данных с помошью ORM Propel.

Npub Nblognot
Записей: 2
Последняя: 4 сентября 2008 г.
Комментариев: 4
Последний: 21 января 2010 г.

Методы работы с мультиязычным приложением.

Npub Nblognot
Записей: 3
Последняя: 4 сентября 2008 г.

Техники конфигурирования.

Npub Nblognot
Записей: 2
Последняя: 5 сентября 2008 г.

Юзаем плагин.

Npub Nblognot
Записей: 12
Последняя: 14 января 2009 г.

Записи по изучению логики работы фреймворка.
Все что накопилось в душе...

Npub Nblognot
Записей: 4
Последняя: 13 января 2009 г.

Приемы и примеры оформления внешнего вида шаблонов в symfony.

Npub Nblognot
Записей: 8
Последняя: 6 сентября 2008 г.
Комментариев: 17283
Последний: 11 февраля 2010 г.

Описание процесса разработки этого сайта.
Сдесь буду писать о всех функциональных нововведениях и исправлениях.


Refresh

Найдено (33 результата )

Поиск в заголовках
Folder  PHP
Ncpanel Nedit Npub Delete
Как удалить непустую директорию?

Функция рекурсивно пробегает по директории и удаляет все вложенные файлы и папки:

<?php
/**
* Function for recursive removal of a nonempty directory
**/
function removeDirRec($dir)
{
if ($objs = glob($dir."/*")) {
    foreach($objs as $obj) {
        is_dir($obj) ? removeDirRec($obj) : unlink($obj);
    }
}
rmdir($dir);
}
?> 

Comment_big 25 января 2009 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Работа с датой с помощью плагина sfDateTimePlugin

Добавление к дате промежутка времени

$dt = new sfDate ( );
// $dt = new sfDate ( $sub->getDateExpire () );

$nd = $dt->addMonth ( $this->getRequestParameter ( 'month' ) );

$sub->setDateExpire ( $nd->dump () );

Comment_big 14 января 2009 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Работа с flash аттрибутами

Установка и получение аттрибута

$this->setFlash('attrib', $value);

$value = $this->getFlash('attrib');

Проверка в шаблоне

<?php if ($sf_flash->has('attrib')): ?>
  <?php echo $sf_flash->get('attrib') ?>
<?php endif; ?>

Comment_big 13 января 2009 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Как отключить debug панель из action
sfConfig::set('sf_web_debug',false);

Comment_big 13 января 2009 г.
Folder  Верстка в symfony
Ncpanel Nedit Npub Delete
Как обновить несколько элементов страницы AJAX запросом

Для этого необходимо включить дополнительный параметр в хэлпер.

 <?php echo form_remote_tag(array(
     'url'      => '@buy',
     'script' => true
 )) ?>

Это позволит вставить в ответ выполняющийся после запроса javascript, обновляющий много элементов.


Comment_big 9 января 2009 г.
Folder  Верстка в symfony
Ncpanel Nedit Npub Delete
Как сделать ссылку на popup окно javascript window.open()

Вот код

echo link_to 
( 
    __('Написать комментарий'), 
    'zdComments/form_comment?relation_class='.$relation_class.'&relation_id='.$relation_id, 
    array 
    ( 
        'popup' => array 
        ( 
            'Popup title', 
            'top=100,left=100,width=800,height=300,resizable=no,toolbar=no ,scrollbars=no', 
        ) 
    ) 
)   

Comment_big 8 января 2009 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Как возвратиться на исходную станицу при редактировании или удалении записей в админ модуле.

Я выкрутился следующим образом:
В generator.yml добавил свой шаблон

 edit:
   display: [content, _hide]   

В шаблоне _hide.php

<?php
  if(sfContext::getInstance()->getRequest()->getParameter('page'))
{
echo input_hidden_tag('page',sfContext:
:getInstance()->getRequest()->getParameter('page')).
sfContext::getInstance()->getRequest()->getParameter('page');
}
 else
{
echo input_hidden_tag('page',1).'1';
}
?>

Затем в шаблоне _list_td_actions.php добавил параметр page

 <li><?php 
    if(sfContext::getInstance()->getRequest()->getParameter('page'))
{
      echo link_to(image_tag('/sf/sf_admin/images/edit_icon.png',
      array('alt' => __('edit'), 'title' =>__('edit'))),
     'Coment/edit?id='.$coment->getId().'&page='.sfContext:
     :getInstance()->getRequest()->getParameter('page')); 
}
else
{
  echo link_to(image_tag('/sf/sf_admin/images/edit_icon.png',
      array('alt' => __('edit'), 'title' => __('edit'))),
      'Coment/edit?id='.$coment->getId()) ; 
}

  ?></li>
  <li>

  getRequest()->getParameter('page'))
    {
     echo link_to(image_tag('/sf/sf_admin/images/delete_icon.png', 
    array('alt' => __('delete'), 'title' => __('delete'))),
    'Coment/delete?id='.$coment->getId().'&page='.sfContext:
    :getInstance()->getRequest()->getParameter('page'), array (
  'post' => true,
  'confirm' => __('Are you sure?'),
)) ;
    }
    else
    {
     echo link_to(image_tag('/sf/sf_admin/images/delete_icon.png',
      array('alt' => __('delete'), 'title' => __('delete'))), 
      'Coment/delete?id='.$coment->getId(), array (
      'post' => true,
      'confirm' => __('Are you sure?'),
    )) ;
    }
    
    ?>
</li>

И наконец переписал actions

public function executeDelete()
  {
    ....
     if($this->getRequestParameter('page'))
     {
       return $this->redirect('Coment/list?page='.
       $this->getRequestParameter('page'));
     }
     else
     {
       return $this->redirect('Coment/list');
     }
    ....
   }

public function executeEdit()
  {
   ...
   if($this->getRequestParameter('page'))
     {
       return $this->redirect('Coment/list?page='.
       $this->getRequestParameter('page'));
     }
     else
     {
       return $this->redirect('Coment/list');
     }
   ...
  }

Comment_big 10 сентября 2008 г.
Folder  Логика symfony
Ncpanel Nedit Npub Delete
Upload файлов с помощью ajax (js)

Я создал модуль командой symfony init-module backend upload

В apps/backend/modules/upload/actions/action.class.php пишем такой код

class uploadActions extends sfActions
{
  /**
   * Executes index action
   *
   */
public function executeIndex()
{
 // Редирект на 404 если нет параметра claim_id

$this->forward404Unless($this->claim = 
 ClaimPeer::retrieveByPK($this->getRequest()->getParameter('claim_id')));

// Флаг для использования в шаблоне чтоб решить использовать js или нет

$this->isUploaded = false;

// Если пришли с POST

if($this->getRequest()->getMethod() == sfRequest::POST) {
  if($uploaded_file = $this->getRequest()->getFileName('uploaded_file')) {
    if(!empty($uploaded_file)) {
      // очищаем $uploaded_filename 
      $this->getRequest()->moveFile('uploaded_file', './uploads/'   . $this->claim->getClaimId() 
. '/' . $uploaded_file, 0664, true, 0775); 
      $this->uploaded_webpath = $this->claim->getClaimId() . '/' . $uploaded_file;
      $this->isUploaded = true;

      // вставляем запись в таблицу
      $claimdoc = new Claimdocs;
      $claimdoc->setClaimId($this->claim->getClaimId());
      $claimdoc->setFilename($uploaded_file);
      $claimdoc->save();
       }
     }
   }
 }
}

Затем пишем apps/backend/modules/upload/templates/indexSuccess

<?php
use_helper('Upload');

// If we have just uploaded a file then we just run javascript to update the <div>

// Если только что загрузили файл запускаем яваскрипт чтоб обновить див 

if($isUploaded == true) {
    ?>
    <html><head><script>
    var par = window.parent.document;
    var images = par.getElementById('images');
    var imgdiv = images.getElementsByTagName('div')[<?=(int)$_POST['imgnum']?>]; 
// не используем $_POST 
    var image = imgdiv.getElementsByTagName('img')[0];
    imgdiv.removeChild(image);
    var image_new = par.createElement('img');
    image_new.src = '<?=upload_path($uploaded_webpath)?>';
    image_new.className = 'loaded';
    imgdiv.appendChild(image_new);
    </script></head>
    </html>
    <?php
    exit();
}
?><html><head>
<script language="javascript">
function upload(){
    // hide old iframe
    var par = window.parent.document;
    var num = par.getElementsByTagName('iframe').length - 1;
    var iframe = par.getElementsByTagName('iframe')[num];
    iframe.className = 'hidden';

    // create new iframe
    /// Создаем новый фрейм
    var new_iframe = par.createElement('iframe');
    new_iframe.src = '<?=url_for('upload?claim_id='.$claim->getClaimId())?>';
    new_iframe.frameBorder = '0';
    par.getElementById('iframe').appendChild(new_iframe);


    // добавляем картинку индикатора
    var images = par.getElementById('images');
    var new_div = par.createElement('div');
    var new_img = par.createElement('img');
    new_img.src = '<?=image_path('indicator.gif')?>';
    new_img.className = 'load';
    new_div.appendChild(new_img);
    images.appendChild(new_div);

    // отсылаем
    var imgnum = images.getElementsByTagName('div').length - 1;
    document.iform.imgnum.value = imgnum;
    document.iform.submit();
}
</script>
<style>
#file {
    width: 350px;
}
</style>
<head><body><center>
<form name="iform" action="" method="post" enctype="multipart/form-data">
<input id="file" type="file" name="uploaded_file" onchange="upload()" />
<input type="hidden" name="imgnum" />
<input type="hidden" name="claim_id" value="<?=$claim->getClaimId()?>" />
</form>
</center></html>


Теперь мы можем включить этот модуль в другой модуль.
Например в apps/backend/modules/claim/actions/actions.class.php примерно так

public function executeStep2()
{
  // Make sure we have a valid claim_id
  $this->forward404Unless($this->claim = ClaimPeer::retrieveByPK(
$this->getRequest()->getParameter('claim_id')));

  $this->addStylesheet('upload.css');


  // Получаем звязанную запись
  $this->claimdocs = ClaimdocsPeer::getClaimdocs($this->claim->getClaimId());

  return sfView::SUCCESS;
}

Затем в шаблоне apps/backend/modules/claim/templates/step2Success.php

<?php
use_helper('Upload');
?>

<h1>File Upload</h1>

<div id="iframe">
<iframe src="<?=url_for('upload?claim_id='.$claim->getClaimId())?>" frameborder="0"></iframe>
</div>
<div id="images">
<?php foreach($claimdocs as $claimdoc): ?>
  <div><img src="<?=upload_path($claimdoc->getClaimId().'/'.$claimdoc->getFilename())?>"></div>
<?php endforeach ?>
</div>

Here's the 'Upload' helper you see referenced in my code. Put it in apps/backend/lib/helper/UploadHelper.php

Это upload хэлпер, его нужно положить в apps/backend/lib/helper/UploadHelper.php

<?php
use_helper('Asset');

function upload_path($source)
{
  return _compute_public_path($source, 'uploads', false);
}
?>

Comment_big 9 сентября 2008 г.
Folder  Верстка в symfony
Ncpanel Nedit Npub Delete
Вставляем индикатор загрузки формы

Часто при загрузке через форму больших файлов проcят вставить индикатор.
Я его вставляю так в шаблоне:

// вызов ф-ции при submit формы
<?php echo form_tag('Docsfile/save', array(
'multipart' => true,
'onsubmit' =>'upload()' 
)) ?>

сама функция

<script language="javascript">
 function upload(){
   var par = window.parent.document;
   var div = par.getElementById('indic'); 
   div.visibility ="visible";
   div.style.display = "";
  }
</script>

div с картинкой индикатора

<div id="indic" style="display: none">
<?php echo image_tag('/images/indicator.gif') ?> 
<font color="red">Загрузка...</font>
</div>

Comment_big 9 сентября 2008 г.
Folder  Блог сайта
Ncpanel Nedit Npub Delete
Панельки редактирования в блоги

Добавил панельки редактирования в блоги.

в шаблоне проверка на доступность такая

<?php 
if($sf_user->hasCredential('admin') or 
sfContext::getInstance()- >
getUser()->getAttribute( 'user_id', null, 'sfGuardSecurityUser' )==$blog->getUserId() ): 
?>

Comment_big 6 сентября 2008 г.
Folder  Блог сайта
Ncpanel Nedit Npub Delete
Добавил табы в редактирование статей

Разбил на закладки форму редактирования статей


Comment_big 6 сентября 2008 г.
First Previous 1 2 3 Next Last