Search code examples
formsmagentotemplatespostreview

Magento Unable to post review


I am trying to add a review to a product in magento. However, submitting the review form of a product in the frontend gives me an "Unable to post review message".

I haven't found a solution to the problem, that's why im calling in your help :)

This is the code from my review form:

<div class="form-add">
<h2><?php echo $this->__('Write Your Own Review') ?></h2>
<?php if ($this->getAllowWriteReviewFlag()): ?>
    <form action="<?php echo $this->getAction() ?>" method="post" id="review-form">
        <?php echo $this->getBlockHtml('formkey'); ?>
        <?php echo $this->getChildHtml('form_fields_before') ?>
        <h3><?php echo $this->__("You're reviewing:"); ?>
            <span><?php echo $this->escapeHtml($this->getProductInfo()->getName()) ?></span>
        </h3>

        <div class="fieldset">
            <?php if ($this->getRatings() && $this->getRatings()->getSize()): ?>
                <h4><?php echo $this->__('How do you rate this product?') ?> <em class="required">*</em></h4>
                <span id="input-message-box"></span>
                <table class="data-table review-summary-table ratings" id="product-review-table">
                    <col width="1"/>
                    <col/>
                    <col/>
                    <col/>
                    <col/>
                    <col/>
                    <thead>
                    <tr>
                        <th>&nbsp;</th>
                        <th>
                            <div class="rating-box">
                                <span class="rating-number">1</span>
                                <span class="rating nobr"
                                      style="width:20%;"><?php echo $this->__('1 star') ?></span>
                            </div>
                        </th>
                        <th>
                            <div class="rating-box">
                                <span class="rating-number">2</span>
                                <span class="rating nobr"
                                      style="width:40%;"><?php echo $this->__('2 star') ?></span>
                            </div>
                        </th>
                        <th>
                            <div class="rating-box">
                                <span class="rating-number">3</span>
                                <span class="rating nobr"
                                      style="width:60%;"><?php echo $this->__('3 star') ?></span>
                            </div>
                        </th>
                        <th>
                            <div class="rating-box">
                                <span class="rating-number">4</span>
                                <span class="rating nobr"
                                      style="width:80%;"><?php echo $this->__('4 star') ?></span>
                            </div>
                        </th>
                        <th>
                            <div class="rating-box">
                                <span class="rating-number">5</span>
                                <span class="rating nobr"
                                      style="width:100%;"><?php echo $this->__('5 star') ?></span>
                            </div>
                        </th>
                    </tr>
                    </thead>
                    <tbody>
                    <?php foreach ($this->getRatings() as $_rating): ?>
                        <tr>
                            <th><?php echo $this->escapeHtml($_rating->getRatingCode()) ?></th>
                            <?php foreach ($_rating->getOptions() as $_option): ?>
                                <td class="value"><label
                                        for="<?php echo $this->escapeHtml($_rating->getRatingCode()) ?>_<?php echo $_option->getValue() ?>"><input
                                            type="radio" name="ratings[<?php echo $_rating->getId() ?>]"
                                            id="<?php echo $this->escapeHtml($_rating->getRatingCode()) ?>_<?php echo $_option->getValue() ?>"
                                            value="<?php echo $_option->getId() ?>" class="radio"/></label></td>
                            <?php endforeach; ?>
                        </tr>
                    <?php endforeach; ?>
                    </tbody>
                </table>
                <input type="hidden" name="validate_rating" class="validate-rating" value=""/>
                <script type="text/javascript">decorateTable('product-review-table')</script>
            <?php endif; ?>

            <ul class="form-list">
                <li>
                    <label for="review_field"
                           class="required"><em>*</em><?php echo $this->__('Let us know your thoughts') ?></label>
                    <div class="input-box">
                        <textarea name="detail" id="review_field" cols="5" rows="3"
                                  class="required-entry"><?php echo $this->escapeHtml($data->getDetail()) ?></textarea>
                    </div>
                </li>

                <li class="inline-label">
                    <label for="summary_field"
                           class="required"><em>*</em><?php echo $this->__('Summary of Your Review') ?></label>
                    <div class="input-box">
                        <input type="text" name="title" id="summary_field" class="input-text required-entry"
                               value="<?php echo $this->escapeHtml($data->getTitle()) ?>"/>
                    </div>
                </li>

                <li class="inline-label">
                    <label for="nickname_field"
                           class="required"><em>*</em><?php echo $this->__("What's your nickname?") ?></label>
                    <div class="input-box">
                        <input type="text" name="nickname" id="nickname_field" class="input-text required-entry"
                               value="<?php echo $this->escapeHtml($data->getNickname()) ?>"/>
                    </div>
                </li>

            </ul>
        </div>
        <div class="buttons-set">
            <button type="submit" title="<?php echo $this->__('Submit Review') ?>" class="button">
                <span><span><?php echo $this->__('Submit Review') ?></span></span></button>
        </div>
    </form>
    <script type="text/javascript">
        //<![CDATA[
        var dataForm = new VarienForm('review-form');
        Validation.addAllThese(
            [
                ['validate-rating', '<?php echo $this->__('Please select one of each of the ratings above') ?>', function (v) {
                    var trs = $('product-review-table').select('tr');
                    var inputs;
                    var error = 1;

                    for (var j = 0; j < trs.length; j++) {
                        var tr = trs[j];
                        if (j > 0) {
                            inputs = tr.select('input');

                            for (i in inputs) {
                                if (inputs[i].checked == true) {
                                    error = 0;
                                }
                            }

                            if (error == 1) {
                                return false;
                            } else {
                                error = 1;
                            }
                        }
                    }
                    return true;
                }]
            ]
        );
        //]]>
    </script>
<?php else: ?>
    <p class="review-nologged" id="review-form">
        <?php echo $this->__('Only registered users can write reviews. Please, <a href="%s">log in</a> or <a href="%s">register</a>', $this->getLoginLink(), Mage::helper('customer')->getRegisterUrl()) ?>
    </p>
<?php endif ?>

Looks like the standard rwd theme layout. If i delete my custom one so the rwd default pops up it still doesn't work.

The url that i'm posting from is as following:

https://www.example.com/review/product/post/id/73/

Hope someone can help me in the right direction. It's driving me crazy!!!


Solution

  • I solved the problem myself.

    It had nothing to do with the reviews themselves. My first thought was a module that blocked access to the reviews, and after searching in de controller for reviews we found out that the problem was a module that couldn't have a certain length of characters stored in the database. This somehow conflicted with the reviews post.

    After contacting the developers of that module we were able to solve the problem. The module was MailPlus and we solved it by going to the module its configuration and edited the following for Main website: enter image description here

    After changing this the reviews form started working again.

    Thanks everybody for helping me!