rishatss
@rishatss
Simple Developer ^)

Как не переходить по маршруту но выполнить его?

Добрый день господа :)
Есть 4 кнопки
<div class="ramka">
    <h2>Управление виртуальной жизнью</h2>
    </br>
    <div class="ramkaleft">
    </br>
        <form action="/startvirtuallive" method="get">
            <button type="submit" class="btn btn-success">Запустить рождаемость</button>
        </form>
        </br>
        <form action="/startvirtuallivekiller" method="get">
            <button type="submit" class="btn btn-success">Запустить смертность</button>
        </form>
    </div>
    <div class="ramkaright">
        </br>
        <form action="/stopvirtuallive" method="get">
            <button type="submit" class="btn btn-danger">Остановить рождаемость</button>
        </form>
        </br>
        <form action="/stopvirtuallivekiller" method="get">
            <button type="submit" class="btn btn-danger">Остановить смертность</button>
        </form>
    </div>

которые работают по данным маршрутам:
Route::get('/startvirtuallive', 'MainController@startvirtuallive');
Route::get('/startvirtuallivekiller', 'MainController@startvirtuallivekiller');
Route::get('/stopvirtuallive', 'MainController@stopvirtuallive');
Route::get('/stopvirtuallivekiller', 'MainController@stopvirtuallivekiller');

Первые два маршрута отрабатывают и не запускают пустую страницу по этому маршруту, а 3 и 4 маршрут открывают новую пустую страницу. В этой же странице..

UPD
Методы в контроллере:
class MainController extends Controller
{
    public function startvirtuallive()
    {
        $this->virtuallive(true);

    }
    public function startvirtuallivekiller()
    {
        $this->virtuallivekiller(true);

    }

    public function stopvirtuallive()
    {
        $this->virtuallive(false);

    }
    public function stopvirtuallivekiller()
    {
        $this->virtuallivekiller(false);

    }
    public function virtuallivekiller($virtual_livekiller = true)
    {
        if ($virtual_livekiller != false)
        {
            DB::table('virtuallive')
                ->where('id', 1)
                ->update(['livekiller' => 1]);
        }
        if ($virtual_livekiller != true)
        {
            DB::table('virtuallive')
                ->where('id', 1)
                ->update(['livekiller' => 0]);
        }
        while ($virtual_livekiller == true)
        {
            $live = DB::table('virtuallive')->get();
            foreach($live as $animal)
            {
                $now = $animal->livekiller;
            }
            if($now == 1)
            {
                DB::select('CALL fixid();');
                if(DB::table('zagon_all')->where('id', '=', 1)->delete() == true)
                {

                    DB::table('zagon_dead')->insert(
                        ['idanimal' => 1]
                    );
                    DB::select('CALL fixid();');
                }
                sleep(1);
            }
            else
                {
                    break;
                }

        }
    }
    public function virtuallive($virtual_live = true)
    {
        if ($virtual_live != false)
        {
            DB::table('virtuallive')
                ->where('id', 1)
                ->update(['live' => 1]);
        }
        if ($virtual_live != true)
        {
            DB::table('virtuallive')
                ->where('id', 1)
                ->update(['live' => 0]);
        }
        while ($virtual_live == true) {
            $live = DB::table('virtuallive')->get();
            foreach($live as $animal)
            {
                $now = $animal->live;
            }
            if($now == 1){
            DB::table('zagon_all')-> insertGetId(
                []
            );
            DB::select('CALL fixid();');
            sleep(10);
            }
            else
            {
                break;
            }

        }
    }
}

В чем проблема?


Записал видео, где показал визуально в чем проблема:
https://www.youtube.com/watch?v=f2Fuy9If3gE&featur...
  • Вопрос задан
  • 691 просмотр
Решения вопроса 1
ajaxtelamonid
@ajaxtelamonid
Laravel
То, что ничего не показывается на странице - это правильно, у вас так и написано, что ничего не показывать. Чтобы показывалось, надо делать return view(...) , а у вас в контроллерах только вызов метода и всё.

Первые два метода тоже ничего не возвращают, просто в них у вас код зацикливается на while ($virtual_live == true), нового контента на страницу не приходит, и кажется, что страница перерисовалась. На самом деле просто http-запрос ещё не окончен - обратите внимание на крутилку хрома в табе.

Вам надо делать return reditect(...) на страницу, которая рисует первоначальную картинку.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vism
Вобщем.
Это вопрос от "тролля". ОН не хочет даже основы основ выучить и мануалы прочитать, и все спамит на тостере ежедневно очень глупыми вопросами.
Не ведитесь. :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы