Параметр php + zend..pass в запросе - PullRequest
0 голосов
/ 24 октября 2010

Я хочу передать параметр вместе с моим действием add. То есть, если щелкнуть владельца в пункте меню, то по умолчанию должен быть установлен is_owner, иначе "add" хочет отправить еще один параметр и получить к нему доступ Это диспетчер запросов ..

$ router-> map ('Company', 'Company', array ('controller' => 'companies', 'action' => 'add'));

  $router->map('people', 'people', array('controller' => 'people', 'action' => 'index'));
  $router->map('people_archive', 'people/archive', array('controller' => 'people', 'action' => 'archive'));

это действие Добавить в классе контроллера

 function add() {
  if($this->request->isApiCall() && !$this->request->isSubmitted()) {
    $this->httpError(HTTP_ERR_BAD_REQUEST, null, true, true);
  } // if

  if(!Company::canAdd($this->logged_user)) {
    $this->httpError(HTTP_ERR_FORBIDDEN, null, true, $this->request->isApiCall());
  } // if

  $company = new Company();
  $options = array('office_address', 'office_phone', 'office_fax', 'office_homepage','office_is_owner');

  $company_data = $this->request->post('company');
  $this->smarty->assign(array(
    'company_data' => $company_data,
    'active_company' => $company,
  ));

  if ($this->request->isSubmitted()) {
   db_begin_work();

   $company = new Company();
   $company->setAttributes($company_data);
   $company->setIsOwner(false);

    $save = $company->save();

    if($save && !is_error($save)){
      foreach($options as $option) {
        $value = trim(array_var($company_data, $option));

        if($option == 'office_homepage' && $value && strpos($value, '://') === false) {
          $value = 'http://' . $value;
        } // if

        if($value != '') {
          CompanyConfigOptions::setValue($option, $value, $company);
        } // if
      } // foreach

      db_commit();

      if($this->request->getFormat() == FORMAT_HTML) {
       flash_success("Company ':name' has been created", array('name' => $company->getName()));
       $this->redirectToUrl($company->getViewUrl());
      } else {
       $this->serveData($company, 'company');
      } // if
    } else {
      db_rollback();

     if($this->request->getFormat() == FORMAT_HTML) {
      $this->smarty->assign('errors', $save);
     } else {
      $this->serveData($save);
     } // if
    } // if
  } // if
} // add

PLZ PLZ, помогите мне

1 Ответ

0 голосов
/ 25 октября 2010

не можете ли вы просто передать дополнительный параметр с контроллером и действием?:

$router->map('Company', 'Company', array(
     'controller' => 'companies',
     'action' => 'add',
     'paramkey' => 'paramvalue',
     'anotherparam' => 'anothervalue'));

Они затем отображаются в запросе, хотя, вероятно, не в виде записи.Попробуйте посмотреть, как выглядит запрос $ this-> вашего контроллера при передаче этих параметров.

...