Есть ли php-фреймворк, облегчающий работу с jquery & ajax? - PullRequest
4 голосов
/ 07 июня 2011

Я использую Codeigniter в течение последних двух лет и действительно стал большим поклонником, но за последний год я обнаружил, что пишу все больше и больше javascript, чем PHP.

Вначале я писал все на PHP, но теперь я все время использую $ .ajax.И я чувствую, что я повторяюсь между javascript и php.

Я знаю, что CI дает вам хороший контроль над ajax, но у меня все еще есть две записи тонны javascript, и я хотел бы объединить, если это вообще возможно.

Я думаю, чтоЯ ищу php-фреймворк, который тесно интегрируется с $ .ajax jQuery.

Ответы [ 2 ]

3 голосов
/ 04 сентября 2011

Изучите Agile Toolkit, который представляет собой PHP UI Framework .Пользовательский интерфейс означает, что он заботится о HTML, JavaScript, CSS и AJAX, и в то же время позволяет разрабатывать на простом объектно-ориентированном языке PHP.

http://agiletoolkit.org/intro/javascript

В блоге также есть сравнение этогос CodeIgniter: http://agiletoolkit.org/blog/agile-toolkit-for-codeigniter-developer/

ps Я являюсь соавтором Agile Toolkit.

3 голосов
/ 07 июня 2011

Я использую этот кусок кода в Javascript. Мудрые вещи организованы в виде организации MVC, поэтому вещи, влияющие на один модуль, обычно группируются вместе. В общем, я также создаю отдельный модуль для отдельной модели, но в некоторых случаях вы можете отклониться от этого принципа.

Моя установка с Symfony сзади и простым jquery на фронте. Есть некоторые подходы, которые автоматизируют эту часть, например http://javascriptmvc.com/,. Я считаю, что она слишком ограничена во многих частях. Вот мой рабочий процесс для интеграции php и jquery.

PHP

Выполнить кусок кода и обернуть его внутри блока try / catch. Таким образом, сообщения об ошибках могут распространяться на внешний интерфейс. Этот метод помогает в этом отношении преобразовать исключения в читаемую ошибку. (для отладки из JSON).

try {
    //... execute code ..  go about your buisness..
    $this->result = "Moved  " . count($files) . " files ";
    // result can be anything that can be serialized by json_encode()
} catch (Exception $e) {
   $this->error = $e->getMessage() . ' l: '  . $e->getLine() . ' f:' . $e->getFile();
   // return an error message if there is an exception. Also throw exceptions yourself to make your life easier.
}
// json response basically does something like echo json_encode(array("error" => $this->error, "result" => $this->result))
return $this->jsonResponse();

Для обработки ошибок я часто использую это для разбора ошибок.

public function parseException($e) {
    $result = 'Exception: "';
    $result .= $e->getMessage();
    $trace = $e->getTrace();
    foreach (range(0, 10) as $i) {
        $result .= '" @ ';
        if (!isset($trace[$i])) {
            break;
        }
        if (isset($trace[$i]['class'])) {
            $result .= $trace[$i]['class'];
            $result .= '->';
        }
        $result .= $trace[$i]['function'];
        $result .= '(); ';
        $result .= $e->getFile() . ':' . $e->getLine() . "\n\n";
    }

    return $result;
}

Сторона Javascript

/**
 * doRequest in an ajax development tool to quickly execute data posts.
 * @requires jQuery.log
 * @param action (string): url for the action to be called. in config.action the prefix for the url can be set
 * @param data (object): data to be send. eg. {'id':5, 'attr':'value'}
 * @param successCallback (function): callback function to be executed when response is success
 * @param errorCallback (function): callback function to be executed when response is success
 */
jQuery.doRequest = function (action, data, successCallback, errorCallback) {
    if (typeof(successCallback) == "undefined") {
        successCallback = function(){};
    } 
    if (typeof(errorCallback) == "undefined") {
        errorCallback = function(data ){
            alert(data.error);
        };
    }
    jQuery.log(action);

    jQuery.post(action, data, function (data, status)
    {

        jQuery.log(data);
        jQuery.log(status);
        if (data.error !== null || status != 'success') {
            // error handler
            errorCallback(data);
        } else {
            successCallback(data);
        }
    },'json');
};

Примечание: обратные вызовы ошибок очень хороши, если объединить их с чем-то вроде pNotify

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...