小编hre*_*tic的帖子

具有相同路由组的多个前缀

我为一所学校写了一个相当简单的网站...这个网站有新闻,文章,视频剪辑等

它的工作方式是在主页上我们向访客提供一些课程

>math 
>geography 
>chemistry 
Run Code Online (Sandbox Code Playgroud)

用户根据用户选择在这些和网站内容上选择1

例如,如果用户选择数学,他将看到关于数学的新闻,文章,视频......现在这就是我在做什么(请求忽略语法错误)

Route::group(['prefix'=>'math'], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});

Route::group(['prefix'=>'geography'], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});

Route::group(['prefix'=>'chemistry'], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});
Run Code Online (Sandbox Code Playgroud)

基本上重复每个前缀的所有链接....但随着链接的增长,它将变得越来越难以管理......有没有更好的方法来做到这一点?就像是

Route::group(['prefix'=>['chemistry','math' , 'geography' ], function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
});
Run Code Online (Sandbox Code Playgroud)

-------------------------更新-------------

我试过这个

$myroutes =  function () {
    Route::get('/news', 'NewsController@index')->name('news_index');
    Route::get('/article', 'ArticleController@index')->name('article_index');
};

Route::group(['prefix' => 'chemistry'], $myroutes);
Route::group(['prefix' => 'math'], $myroutes);
Route::group(['prefix' => 'geography'], $myroutes);
Run Code Online (Sandbox Code Playgroud)

它工作正常,问题是最后一个前缀附加到所有内部链接

例如,如果我点击数学

我的链接将是

site.com/math/news

但是加载页面上的所有链接都像

<a href="{{route('article_index')"> link to …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5.4

20
推荐指数
4
解决办法
4654
查看次数

在Framework7中显示/隐藏页面加载时的预加载器

我想在页面加载时显示所有内容的预加载器,并在页面加载完成时隐藏它并显示内容(我不是在谈论内部链接 - 就像在浏览器中键入地址并等待要加载的页面.)像这个演示:https://demo.app-framework.com/

我试过这个:

var app = new Framework7({
  // App root element
  root: '#app',
  // App Name
  name: 'My App',
  // App id
  id: 'com.myapp.test',

    on: {
        init: function () {
            console.log('App initialized');
        },
        pageInit: function () {
            console.log('Page initialized');
            app.preloader.hide();
        },
    }
  // ... other parameters
});

var mainView = app.views.create('.view-main');
app.preloader.show();
Run Code Online (Sandbox Code Playgroud)

但它不起作用它像其他元素一样显示加载器并且不隐藏它,我不确定它是否可能.如果有人能指出我正确的方向,我将不胜感激.

javascript html-framework-7

16
推荐指数
1
解决办法
1982
查看次数

laravel如何在数据库中找到模型与其表之间的连接

在我的模型中我有

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Page extends Model
{
    //
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我可以说Page:all()并从pages表中获取所有行,但我没有看到数据库中的Page模型和pages表之间的任何连接

它只是根据型号名称猜测表格名称(最后是额外的s的小写)或者在其他地方提到它?

php laravel laravel-5 laravel-5.2

8
推荐指数
1
解决办法
4003
查看次数

laravel 5.4:无法在__construct方法中访问Auth :: user()

在Laravel的早期版本中,在我需要以所有方法访问登录用户的控制器中,我曾经做过这样的事情:

class DashboardController extends Controller
{
    private $user ;
    function __construct(Request $request)
    {
        $this->middleware('auth');
        $this->user = \Auth::user();
    }

    function func_1(){
      $objects = Objects::where('user_id' , $this->user->id )->get();
    }
    function func_2(){
      $objects = Objects::where('user_id' , $this->user->id )->get();
    }
    function func_3(){
      $objects = Objects::where('user_id' , $this->user->id )->get();
    }
Run Code Online (Sandbox Code Playgroud)

主要是因为我不喜欢默认语法,\Auth::user()但在升级到5.4之后,这不再适用了,而且我得到null$this->user

但它在其他方法中工作正常.基本上,\Auth::user()返回null__construct方法,但在其他功能工作正常.

php laravel laravel-5.4

8
推荐指数
1
解决办法
5716
查看次数

How to find which error has caused pm2 to restart

I'm running a Node.js puppeteer script with pm2. It's important to keep this process stable. After 2 days of work I see 2 restarts in my pm2 stats.

I want to find out what is causing the restarts. In my error logs I see 3 main errors:

Error: Page crashed (puppeteer )
Error: Quit inactivity timeout (mysql)
or: Timed out after 30000 ms while trying to connect to Chrome! (puppeteer )
Run Code Online (Sandbox Code Playgroud)

Here is my error log (I've only left …

javascript node.js pm2 puppeteer

8
推荐指数
1
解决办法
1222
查看次数

python signalR-尝试连接时出现500服务器错误

我试图使用此库连接到signalR api

https://pypi.org/project/signalr-client/

这是我的代码

from requests import Session
from signalr import Connection

with Session() as session:
    #create a connection
    connection = Connection("https://firouzex.exphoenixtrade.com/realtime", session)

    #get chat hub
    chat = connection.register_hub('GetNewAPIToken')

    #start a connection
    connection.start()
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误

$ python test.py
Traceback (most recent call last):
  File "test.py", line 12, in <module>
    connection.start()
  File "C:\Users\Rooz\AppData\Local\Programs\Python\Python35\lib\site-packages\signalr\_connection.py", line 47, in start
    negotiate_data = self.__transport.negotiate()
  File "C:\Users\Rooz\AppData\Local\Programs\Python\Python35\lib\site-packages\signalr\transports\_auto_transport.py", line 16, in negotiate
    negotiate_data = Transport.negotiate(self)
  File "C:\Users\Rooz\AppData\Local\Programs\Python\Python35\lib\site-packages\signalr\transports\_transport.py", line 28, in negotiate
    negotiate.raise_for_status()
  File "C:\Users\Rooz\AppData\Local\Programs\Python\Python35\lib\site-packages\requests\models.py", line 940, in raise_for_status …
Run Code Online (Sandbox Code Playgroud)

python signalr

7
推荐指数
1
解决办法
137
查看次数

puppeteer:我如何等待ajax请求并处理结果

所以我打开一个网站,为所有重定向做完捕获验证码图像并将其发送给用户并将其发送给用户并重新输入打印的验证码

    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();

    await page.goto('http://localhost/p1.php' );
    await page.waitForNavigation();

    const captcha_image = await page.$eval('#security', e => e.getAttribute('src'));

    io.emit('send_captcha_to_client' , {text : captcha_image });

    var captcha = await captchaPromise;
Run Code Online (Sandbox Code Playgroud)

在我重新获得capthca的类型值后,我将它放在字段中并单击登录按钮

    await page.$eval('#W_CAPTCHA', (el , _captcha) => el.value = _captcha.W_CAPTCHA , captcha );

    await page.click('#login-btn');
Run Code Online (Sandbox Code Playgroud)

现在点击按钮后,ajax请求将被发送到服务器,让我们说http://example.com/login.php ...如果验证码是正确的,我将被重定向到我的仪表板,但如果ajax调用返回,请说{status:er}

并且 <span id="alert"></span>在页面中它将为其添加.Error类并将错误文本放在那里...我如何拦截ajax调用并检查登录是否成功?

我可以查看ajax调用的结果或等待并检查文档div.Error 但不知道我怎么能做到这些...这是我失败的尝试!

await page.waitForNavigation();

page.waitForSelector('.Error');
const error  = await page.$eval('.Error', e => e.value );

console.log(error);

browser.close();
Run Code Online (Sandbox Code Playgroud)

javascript ajax puppeteer

6
推荐指数
2
解决办法
8486
查看次数

puppeteer:如何检查浏览器是否仍在打开并正常工作

我试图在单个浏览器实例中打开多个选项卡,完成后我关闭这些选项卡,然后每隔x秒重新打开这些选项卡...但是我想保持浏览器本身处于打开状态,因此我不必登录每个循环中的每个选项卡

因此浏览器保持打开状态,标签页会打开和关闭

这是我的简化代码,请忽略语法错误

var  global_browser = false ;
async function init_puppeteer( settings ) {



    if(global_browser === false )
        global_browser = await puppeteer.launch({headless: false  , args:['--no-sandbox']});

    for(var i = 0  ; i < settings.length ; i++ )
    {
        var setting = settings[i];
        open_tab($setting);
    }
}



 async function open_tab( setting ){
    const page    = await global_browser.newPage();
    // do stuff 
    page.close();   
}

setInterval(function (){
    init_puppeteer(settings)
}, 50000 );
Run Code Online (Sandbox Code Playgroud)

这是问题所在,有时浏览器崩溃或由于某种原因而关闭,但global_browser仍然是伪造对象的对象/实例...诅咒当我尝试使用该实例打开选项卡时它将无法正常工作,并且我得到类似

(node:5720) UnhandledPromiseRejectionWarning: Error: WebSocket is not open: readyState 3 (CLOSED)
Run Code Online (Sandbox Code Playgroud)

这是我的问题,我该如何检查并确保我有puppeteer的工作/开放实例global_browser …

javascript puppeteer

6
推荐指数
2
解决办法
4623
查看次数

使用 puppeteer-recorder 录制浏览器的视频

我正在尝试记录 puppeteer 以查看当我在服务器上运行它时会发生什么,因为我知道这个包可以满足我的需求。

https://www.npmjs.com/package/puppeteer-recorder

所以这是我的代码的简化版本

const puppeteer = require('puppeteer');
const { record } = require('puppeteer-recorder');
var path = 'C:\\wamp64\\www\\home_robot\\';

init_puppeteer();

const global_browser  ; 
async function init_puppeteer() {

        global_browser = await puppeteer.launch({headless: false , args: ['--no-sandbox', '--disable-setuid-sandbox']});

    check_login()
};

async function check_login()
{
    try {
        const page = await global_browser.newPage();
        await page.setViewport({width: 1000, height: 1100});

        await record({
            browser: global_browser, // Optional: a puppeteer Browser instance,
            page: page, // Optional: a puppeteer Page instance,
            output: path + 'output.webm',
            fps: 60,
            frames: 60 …
Run Code Online (Sandbox Code Playgroud)

puppeteer

6
推荐指数
2
解决办法
8784
查看次数

在给定方案中,我是否需要担心UPDATE操作中同时请求的影响

想象一下这个场景,我有一个网站,用户通过销售他们的项目或点击广告或任何我的用户表将是这样的活动得到信任

users : id , username , credit 
         15 , alex     , 1000 
         16 , jack     , 1500 
Run Code Online (Sandbox Code Playgroud)

所以现在用户可以要求在某种支付方式中提取信用卡,我的提款表就是这样的

withdraws : 
id , user_id , amount 
1  ,  15      , 500 
2  ,  16      , 100 
Run Code Online (Sandbox Code Playgroud)

我不得不从他们的信用中扣除提款金额...我喜欢用触发器做这件事

CREATE TRIGGER  withdraw
  BEFORE INSERT
  ON withdraws
  FOR EACH ROW
BEGIN

     UPDATE  users SET credit = credit-NEW.amount WHERE id  = NEW.user_id;
END $$
Run Code Online (Sandbox Code Playgroud)

并确保用户在撤销过程中不能以负面信用结束我有这个触发器(诅咒我也会在代码逻辑中检查这一点)

CREATE TRIGGER  update_user
  BEFORE UPDATE
  ON users
  FOR EACH ROW
BEGIN

    IF NEW.credit < 0 THEN 
          SIGNAL SQLSTATE '45000' …
Run Code Online (Sandbox Code Playgroud)

mysql sql security database-design stored-procedures

5
推荐指数
1
解决办法
63
查看次数