Jump to content

Not able to perform form submit


Recommended Posts

Hello,

I have been trying to develop a custom module in prestashop for the customers to add testimonials after getting their order delivered. Being a newbie in prestashop I'm stuck on a very silly issue of form submit.

I have a module in which there is a module file whose location is root/modules/Testimonialmodule/TestimonialModule.php

class TestimonialModule extends Module{

    public function __construct(){
        $this->name = 'testimonialmodule';
        $this->displayName = 'Testimonials Module';
        $this->tab = 'front_office_features';
        $this->version = '0.1';
        $this->author = 'Nilesh Thadani';
        $this->description = 'Using this module customer will be able to see testimonials on the home page and write reviews about their purchases from the My Account tab';
        $this->bootstrap = true;
        parent::__construct();
    }

    public function install(){
        parent::install();
        $this->registerHook('displayProductTabContent');
        $this->registerHook('displayHome');
        $this->registerHook('displayCustomerAccount');
        $this->registerHook('displayTestimonialForm');
        $this->registerHook('displayTestimonial');
    }


public function processTestimonialForm(){
        if(Tools::isSubmit('submit_testimonial')){
            $customer_id = $this->context->cookie->id_customer;
            $comment = Tools::getValue('comment');
            $rating = Tools::getValue('rating');
            $img_name = Tools::getValue('fileUpload');
            $order_id = Tools::getValue('order_id');
            $testimonial_allow = Tools::getValue('testimonial_allow');
            if(empty($comment) || empty($rating)){
                $this->errors[] = Tools::displayError('Message and rating must be filled while writing a review');
            }
            else {
                if (isset($_FILES['fileUpload']) && !empty($_FILES['fileUpload'])) {
                    $temp = explode(".", $_FILES['fileUpload']['name']);
                    $img_name = $order_id.'_'.$customer_id . '_' . round(microtime(true)) . '_testimonial.' . end($temp);
                    $move_result = move_uploaded_file($_FILES['fileUpload']['tmp_name'], _PS_IMG_DIR_ . 'testimonials/' . $img_name);
                    if(empty($move_result)){
                        $this->errors[] = Tools::displayError('We could not upload your photo, please try again');
                    }
                }
                $insert = array(
                    'order_id' => $order_id,
                    'customer_id' => (int)$customer_id,
                    'comment' => pSQL($comment),
                    'ratings' => (int)$rating,
                    'img_name' => pSQL($img_name),
                    'testimonial' => $testimonial_allow,
                    'date' => date('Y-m-d H:i:s')
                );
                print_r($insert);
                Db::getInstance()->insert('testimonials', $insert);
            }
        }
    }

    public function assignTestimonialForm(){
        $customer_id = $this->context->cookie->id_customer;
        $comments = Db::getInstance()->executeS('SELECT * FROM '._DB_PREFIX_.'testimonials WHERE customer_id='.(int)$customer_id);
        $this->context->smarty->assign('comments', $comments);
    }

    public function hookDisplayTestimonialForm($params){
        $this->processTestimonialForm();
        $this->assignConfiguration();
        $this->assignTestimonialForm();
        $this->context->smarty->assign('link',$this->context->link->getModuleLink('testimonialmodule'));
        return $this->display(__FILE__, 'displayTestimonialForm.tpl');
    }

Here is my .tpl file which is associated with my custom hook located at root/modules/TestimonialModule/views/templates/hook/displayTestimonialForm.tpl

<h3 class="page-product-heading">Product Comments</h3>
<div class="rte">
    <form action="" method="post" id="comment-form">
        {if $enable_order_select eq '1'}
            <input type="hidden" value="{$order->id}" name="order_id">
        {/if}
        {if $enable_ratings eq '1'}
        <div class="form-group">
            <label for="rating">Rating</label>
            <div class="row">
                <div class="col-xs-4">
                    <select name="rating" id="rating" class="form-control" required>
                        <option value="0">--Choose--</option>
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                    </select>
                </div>
            </div>
        </div>
        {/if}
        {if $enable_comments eq '1'}
        <div class="form-group">
            <label for="comment">Comments:</label>
            <textarea name="comment" id="comment" rows="3" class="form-control" required></textarea>
        </div>
        {/if}
        {if $enable_photo_upload eq '1'}
        <div class="form-group">
            <label for="fileUpload">Upload Image </label>
            <input type="file" name="fileUpload" id="fileUpload" />
        </div>
        {/if}
        {if $enable_testimonial eq '1'}
        <div class="form-group">
            <input type="checkbox" name="testimonial_allow" id="testimonial_allow" class="form-control" value="1">
            <label for="testimonial_allow">Allow this review to be uploaded as a testimonial</label>
        </div>
        {/if}
        {if $enable_testimonial eq '1' OR $enable_comments eq '1' OR $enable_photo_upload eq '1' OR $enable_ratings eq '1' OR $enable_order_select eq '1'}
            <button type="submit" class="btn btn-default button-medium" name="submit_testimonial" id="submit_testimonial">
                <span>Save <i class="icon-chevron-right right"></i></span>
            </button>
        {/if}
    </form>
</div>

The problem is when i try to submit the form, isSubmit function return false and hence the code does not get executed.

I have placed this hook on the bottom of the order-detail.tpl file located in the root of my theme's directory.

Any help on this will be highly appreciated.

Thank you.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...